blob: a4efd718f7fe8077682ae69789b1c1c2c74fe0a0 [file] [log] [blame]
/*
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package as;
import org.junit.Ignore;
import org.junit.Test;
import java.util.Date;
import java.util.TimeZone;
/**
* Feature tests for AS Date objects
*/
public class ASDateTests extends ASFeatureTestsBase
{
private String setTimeZone(String s)
{
TimeZone tz = TimeZone.getDefault();
System.out.println("tzoffset is " + new Integer(tz.getOffset(new Date().getTime()) / 3600000).toString());
String offsetString = new Integer(tz.getOffset(new Date().getTime()) / 3600000).toString();
if (offsetString.length() == 2)
offsetString = offsetString.substring(0,1) + 0 + offsetString.substring(1, 2);
if(offsetString.charAt(0) != '-')
offsetString = "+" + offsetString;
offsetString = "GMT" + offsetString + "00";
if (!hasFlashPlayerGlobal)
offsetString = "GMT-0800";
System.out.println("GMT is " + offsetString);
return s.replace("TZ", offsetString);
}
private String setTimeZoneOffsetMinutes(String s)
{
TimeZone tz = TimeZone.getDefault();
System.out.println("tzoffset is " + new Integer(tz.getOffset(new Date().getTime()) / 3600000).toString());
String offsetString = new Integer(tz.getOffset(new Date().getTime()) / -60000).toString();
if (!hasFlashPlayerGlobal)
offsetString = "-480";
System.out.println("offset in minutes is " + offsetString);
return s.replace("TZ", offsetString);
}
@Test
public void ASDateTests_date()
{
System.out.println("ASDateTests_date");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
setTimeZone("var date : Date = new Date('Sat Jun 30 23:59:59 2018');"),
"date.date += 1;",
"assertEqual('date.date', date.date, 1);",
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndRun(source);
}
@Test
public void ASDateTests_dateUTC()
{
System.out.println("ASDateTests_dateUTC");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
"var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
"date.dateUTC += 1;",
"assertEqual('date.dateUTC', date.dateUTC, 2);",
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndRun(source);
}
@Test
public void ASDateTests_day()
{
System.out.println("ASDateTests_day");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
"var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
"date.day += 1;",
"assertEqual('date.day', date.day, 0);",
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndExpectErrors(source, false, false, false, null, "Property day is read-only.\n");
}
@Test
public void ASDateTests_dayUTC()
{
System.out.println("ASDateTests_dayUTC");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
"var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
"date.dayUTC += 1;",
"assertEqual('date.dayUTC', date.dayUTC, 1);",
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndExpectErrors(source, false, false, false, null, "Property dayUTC is read-only.\n");
}
@Test
public void ASDateTests_fullYear()
{
System.out.println("ASDateTests_fullYear");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
setTimeZone("var date : Date = new Date('Mon Dec 31 23:59:59 TZ 2018');"),
"date.fullYear += 1;",
"assertEqual('date.fullYear', date.fullYear, 2019);",
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndRun(source);
}
@Test
public void ASDateTests_fullYearUTC()
{
System.out.println("ASDateTests_fullYearUTC");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
"var date : Date = new Date('Mon Dec 31 23:59:59 GMT-0800 2018');",
"date.fullYearUTC += 1;",
"assertEqual('date.fullYearUTC', date.fullYearUTC, 2020);",
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndRun(source);
}
@Test
public void ASDateTests_hours()
{
System.out.println("ASDateTests_hours");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
setTimeZone("var date : Date = new Date('Sat Jun 30 23:59:59 2018');"),
"date.hours += 1;",
"assertEqual('date.hours', date.hours, 0);",
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndRun(source);
}
@Test
public void ASDateTests_hoursUTC()
{
System.out.println("ASDateTests_hoursUTC");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
"var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
"date.hoursUTC += 1;",
"assertEqual('date.hoursUTC', date.hoursUTC, 8);",
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndRun(source);
}
@Test
public void ASDateTests_milliseconds()
{
System.out.println("ASDateTests_milliseconds");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
"var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
"date.milliseconds -= 1;",
"assertEqual('date.milliseconds', date.milliseconds, 999);",
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndRun(source);
}
@Test
public void ASDateTests_millisecondsUTC()
{
System.out.println("ASDateTests_millisecondsUTC");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
"var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
"date.millisecondsUTC -= 1;",
"assertEqual('date.millisecondsUTC', date.millisecondsUTC, 999);",
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndRun(source);
}
@Test
public void ASDateTests_minutes()
{
System.out.println("ASDateTests_minutes");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
"var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
"date.minutes += 1;",
"assertEqual('date.minutes', date.minutes, 0);",
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndRun(source);
}
@Test
public void ASDateTests_minutesUTC()
{
System.out.println("ASDateTests_minutesUTC");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
"var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
"date.minutesUTC += 1;",
"assertEqual('date.minutesUTC', date.minutesUTC, 0);",
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndRun(source);
}
@Test
public void ASDateTests_month()
{
System.out.println("ASDateTests_month");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
setTimeZone("var date : Date = new Date('Sat Jun 30 23:59:59 2018');"),
"date.month += 1;",
"assertEqual('date.month', date.month, 6);",
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndRun(source);
}
@Test
public void ASDateTests_monthUTC()
{
System.out.println("ASDateTests_monthUTC");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
"var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
"date.monthUTC += 1;",
"assertEqual('date.monthUTC', date.monthUTC, 7);",
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndRun(source);
}
@Test
public void ASDateTests_seconds()
{
System.out.println("ASDateTests_seconds");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
"var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
"date.seconds += 1;",
"assertEqual('date.seconds', date.seconds, 0);",
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndRun(source);
}
@Test
public void ASDateTests_secondsUTC()
{
System.out.println("ASDateTests_secondsUTC");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
"var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
"date.secondsUTC += 1;",
"assertEqual('date.secondsUTC', date.secondsUTC, 0);",
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndRun(source);
}
@Test
public void ASDateTests_time()
{
System.out.println("ASDateTests_time");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
"var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
"date.time += 1;",
"assertEqual('date.time', date.time, 1530431999001);",
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndRun(source);
}
@Ignore
@Test
public void ASDateTests_timezoneOffset_get()
{
System.out.println("ASDateTests_timezoneOffset_get");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
"var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
setTimeZoneOffsetMinutes("assertEqual('date.timezoneOffset', date.timezoneOffset, TZ);"),
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndRun(source);
}
@Test
public void ASDateTests_timezoneOffset_set()
{
System.out.println("ASDateTests_timezoneOffset_set");
String[] imports = new String[]
{
};
String[] declarations = new String[]
{
};
String[] testCode = new String[]
{
"var date : Date = new Date('Sat Jun 30 23:59:59 GMT-0800 2018');",
"date.timezoneOffset += 480;",
"assertEqual('date.timezoneOffset', date.timezoneOffset, 0);",
};
String source = getAS(imports, declarations, testCode, new String[0]);
compileAndExpectErrors(source, false, false, false, null, "Property timezoneOffset is read-only.\n");
}
}