static v8::Handle<v8::Value> locale_get_firstDayOfWeek(v8::Local<v8::String>, const v8::AccessorInfo &info)
{
GET_LOCALE_DATA_RESOURCE(info.This());
- return v8::Integer::New(r->locale.firstDayOfWeek());
+ int fdow = int(r->locale.firstDayOfWeek());
+ if (fdow == 7)
+ fdow = 0; // Qt::Sunday = 7, but Sunday is 0 in JS Date
+ return v8::Integer::New(fdow);
}
static v8::Handle<v8::Value> locale_get_measurementSystem(v8::Local<v8::String>, const v8::AccessorInfo &info)
void dayName();
void standaloneDayName_data();
void standaloneDayName();
+ void firstDayOfWeek_data();
+ void firstDayOfWeek();
void weekDays_data();
void weekDays();
void uiLanguages_data();
LOCALE_PROP(QString,negativeSign),
LOCALE_PROP(QString,positiveSign),
LOCALE_PROP(QString,exponential),
- LOCALE_PROP(int,firstDayOfWeek),
LOCALE_PROP(int,measurementSystem),
LOCALE_PROP(int,textDirection),
{ 0, QVariant() }
delete obj;
}
+void tst_qdeclarativelocale::firstDayOfWeek_data()
+{
+ QTest::addColumn<QString>("locale");
+
+ QTest::newRow("en_US") << "en_US";
+ QTest::newRow("de_DE") << "de_DE";
+ QTest::newRow("ar_SA") << "ar_SA";
+ QTest::newRow("hi_IN") << "hi_IN";
+ QTest::newRow("zh_CN") << "zh_CN";
+ QTest::newRow("th_TH") << "th_TH";
+}
+
+void tst_qdeclarativelocale::firstDayOfWeek()
+{
+ QFETCH(QString, locale);
+
+ QDeclarativeComponent c(&engine, testFileUrl("properties.qml"));
+
+ QObject *obj = c.create();
+ QVERIFY(obj);
+
+ QMetaObject::invokeMethod(obj, "setLocale", Qt::DirectConnection,
+ Q_ARG(QVariant, QVariant(locale)));
+
+ QVariant val = obj->property("firstDayOfWeek");
+ QVERIFY(val.type() == QVariant::Int);
+
+ int day = int(QLocale(locale).firstDayOfWeek());
+ if (day == 7) // JS Date days in range 0(Sunday) to 6(Saturday)
+ day = 0;
+ QCOMPARE(day, val.toInt());
+
+ delete obj;
+}
+
void tst_qdeclarativelocale::weekDays_data()
{
QTest::addColumn<QString>("locale");