avm1: Implement Date - #249

This commit is contained in:
Nathan Adams 2020-07-08 20:26:00 +02:00 committed by Mike Welsh
parent 3d30ec67e2
commit 86eb6f2e50
78 changed files with 199494 additions and 2 deletions

26
Cargo.lock generated
View File

@ -226,6 +226,18 @@ name = "cfg-if"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "chrono"
version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"js-sys 0.3.44 (registry+https://github.com/rust-lang/crates.io-index)",
"num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
"wasm-bindgen 0.2.67 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "clang-sys"
version = "0.29.3"
@ -2250,6 +2262,7 @@ version = "0.1.0"
dependencies = [
"approx 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"bitstream-io 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)",
"chrono 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)",
"downcast-rs 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"enumset 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2263,6 +2276,7 @@ dependencies = [
"libflate 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"minimp3 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
"num_enum 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"png 0.16.7 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2390,6 +2404,7 @@ name = "ruffle_web"
version = "0.1.0"
dependencies = [
"byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
"chrono 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)",
"console_error_panic_hook 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"console_log 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2767,6 +2782,15 @@ dependencies = [
"miniz_oxide 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "time"
version = "0.1.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.2.76 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "toml"
version = "0.5.6"
@ -3339,6 +3363,7 @@ dependencies = [
"checksum cc 1.0.52 (registry+https://github.com/rust-lang/crates.io-index)" = "c3d87b23d6a92cd03af510a5ade527033f6aa6fa92161e2d5863a907d4c5e31d"
"checksum cexpr 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27"
"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
"checksum chrono 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "c74d84029116787153e02106bf53e66828452a4b325cc8652b788b5967c0a0b6"
"checksum clang-sys 0.29.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fe6837df1d5cba2397b835c8530f51723267e16abbf83892e9e5af4f0e5dd10a"
"checksum clap 3.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)" = "860643c53f980f0d38a5e25dfab6c3c93b2cb3aa1fe192643d17a293c6c41936"
"checksum clap_derive 3.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fb51c9e75b94452505acd21d929323f5a5c6c4735a852adbd39ef5fb1b014f30"
@ -3597,6 +3622,7 @@ dependencies = [
"checksum thiserror-impl 1.0.20 (registry+https://github.com/rust-lang/crates.io-index)" = "bd80fc12f73063ac132ac92aceea36734f04a1d93c1240c6944e23a3b8841793"
"checksum thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14"
"checksum tiff 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3f3b8a87c4da944c3f27e5943289171ac71a6150a79ff6bacfff06d159dfff2f"
"checksum time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
"checksum toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a"
"checksum tracing 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)" = "6d79ca061b032d6ce30c660fded31189ca0b9922bf483cd70759f13a2d86786c"
"checksum tracing-core 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "4f0e00789804e99b20f12bc7003ca416309d28a6f495d6af58d1e2c2842461b5"

View File

@ -30,6 +30,8 @@ weak-table = "0.3.0"
percent-encoding = "2.1.0"
thiserror = "1.0"
json = "0.12.4"
chrono = "0.4"
num-traits = "0.2"
[dependencies.jpeg-decoder]
version = "0.1.20"

View File

@ -19,6 +19,7 @@ mod color;
mod color_transform;
pub(crate) mod context_menu;
pub(crate) mod context_menu_item;
mod date;
pub(crate) mod display_object;
pub(crate) mod error;
mod function;
@ -339,6 +340,7 @@ pub struct SystemPrototypes<'gc> {
pub bitmap_filter_constructor: Object<'gc>,
pub blur_filter: Object<'gc>,
pub blur_filter_constructor: Object<'gc>,
pub date: Object<'gc>,
}
/// Initialize default global scope and builtins for an AVM1 instance.
@ -409,6 +411,7 @@ pub fn create_globals<'gc>(
Some(function_proto),
movie_clip_loader_proto,
);
let date_proto: Object<'gc> = date::create_proto(gc_context, object_proto, function_proto);
//TODO: These need to be constructors and should also set `.prototype` on each one
let object = object::create_object_object(gc_context, object_proto, function_proto);
@ -488,6 +491,7 @@ pub fn create_globals<'gc>(
let string = string::create_string_object(gc_context, string_proto, Some(function_proto));
let number = number::create_number_object(gc_context, number_proto, Some(function_proto));
let boolean = boolean::create_boolean_object(gc_context, boolean_proto, Some(function_proto));
let date = date::create_date_object(gc_context, date_proto, Some(function_proto));
let flash = ScriptObject::object(gc_context, Some(object_proto));
let geom = ScriptObject::object(gc_context, Some(object_proto));
@ -589,6 +593,7 @@ pub fn create_globals<'gc>(
globals.define_value(gc_context, "String", string.into(), DontEnum.into());
globals.define_value(gc_context, "Number", number.into(), DontEnum.into());
globals.define_value(gc_context, "Boolean", boolean.into(), DontEnum.into());
globals.define_value(gc_context, "Date", date.into(), DontEnum.into());
let shared_object_proto = shared_object::create_proto(gc_context, object_proto, function_proto);
@ -810,6 +815,7 @@ pub fn create_globals<'gc>(
bitmap_filter_constructor: bitmap_filter,
blur_filter: blur_filter_proto,
blur_filter_constructor: blur_filter,
date: date_proto,
},
globals.into(),
broadcaster_functions,

View File

@ -0,0 +1,938 @@
use crate::avm1::activation::Activation;
use crate::avm1::error::Error;
use crate::avm1::function::{Executable, FunctionObject};
use crate::avm1::object::date_object::DateObject;
use crate::avm1::property::Attribute;
use crate::avm1::{AvmString, Object, TObject, Value};
use chrono::{DateTime, Datelike, Duration, FixedOffset, LocalResult, TimeZone, Timelike, Utc};
use gc_arena::{Collect, MutationContext};
use num_traits::ToPrimitive;
use std::f64::NAN;
macro_rules! implement_local_getters {
($gc_context: ident, $object:ident, $fn_proto: expr, $($name:expr => $fn:expr),*) => {
$(
$object.force_set_function(
$name,
|activation: &mut Activation<'_, 'gc, '_>, this, _args| -> Result<Value<'gc>, Error<'gc>> {
if let Some(this) = this.as_date_object() {
if let Some(date) = this.date_time() {
let local = date.with_timezone(&activation.context.locale.get_timezone());
Ok($fn(&local).into())
} else {
Ok(NAN.into())
}
} else {
Ok(Value::Undefined)
}
} as crate::avm1::function::NativeFunction<'gc>,
$gc_context,
Attribute::DontDelete | Attribute::ReadOnly | Attribute::DontEnum,
$fn_proto
);
)*
};
}
macro_rules! implement_methods {
($gc_context: ident, $object:ident, $fn_proto: expr, $($name:expr => $fn:expr),*) => {
$(
$object.force_set_function(
$name,
|activation: &mut Activation<'_, 'gc, '_>, this, args| -> Result<Value<'gc>, Error<'gc>> {
if let Some(this) = this.as_date_object() {
$fn(activation, this, args)
} else {
Ok(Value::Undefined)
}
} as crate::avm1::function::NativeFunction<'gc>,
$gc_context,
Attribute::DontDelete | Attribute::ReadOnly | Attribute::DontEnum,
$fn_proto
);
)*
};
}
macro_rules! implement_utc_getters {
($gc_context: ident, $object:ident, $fn_proto: expr, $($name:expr => $fn:expr),*) => {
$(
$object.force_set_function(
$name,
|_activation: &mut Activation<'_, 'gc, '_>, this, _args| -> Result<Value<'gc>, Error<'gc>> {
if let Some(this) = this.as_date_object() {
if let Some(date) = this.date_time() {
Ok($fn(&date).into())
} else {
Ok(NAN.into())
}
} else {
Ok(Value::Undefined)
}
} as crate::avm1::function::NativeFunction<'gc>,
$gc_context,
Attribute::DontDelete | Attribute::ReadOnly | Attribute::DontEnum,
$fn_proto
);
)*
};
}
enum YearType {
Full,
Adjust(Box<dyn Fn(i64) -> i64>),
}
unsafe impl Collect for YearType {
#[inline]
fn needs_trace() -> bool {
false
}
}
impl YearType {
fn adjust(&self, year: i64) -> i64 {
match self {
YearType::Full => year,
YearType::Adjust(function) => function(year),
}
}
}
#[derive(Collect)]
#[collect(no_drop)]
struct DateAdjustment<
'builder,
'activation_a: 'builder,
'gc: 'activation_a,
'gc_context: 'activation_a,
T: TimeZone + 'builder,
> {
activation: &'builder mut Activation<'activation_a, 'gc, 'gc_context>,
year_type: YearType,
timezone: &'builder T,
year: Option<Option<f64>>,
month: Option<Option<f64>>,
day: Option<Option<f64>>,
hour: Option<Option<f64>>,
minute: Option<Option<f64>>,
second: Option<Option<f64>>,
millisecond: Option<Option<f64>>,
ignore_next: bool,
}
impl<'builder, 'activation_a, 'gc, 'gc_context, T: TimeZone>
DateAdjustment<'builder, 'activation_a, 'gc, 'gc_context, T>
{
fn new(
activation: &'builder mut Activation<'activation_a, 'gc, 'gc_context>,
timezone: &'builder T,
) -> Self {
Self {
activation,
timezone,
year_type: YearType::Full,
year: None,
month: None,
day: None,
hour: None,
minute: None,
second: None,
millisecond: None,
ignore_next: false,
}
}
fn adjust_year(&mut self, adjuster: impl Fn(i64) -> i64 + 'static) -> &mut Self {
self.year_type = YearType::Adjust(Box::new(adjuster));
self
}
#[allow(dead_code)]
fn year(&mut self, value: Option<&Value<'gc>>) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.year = Some(if let Some(value) = value {
Some(value.coerce_to_f64(self.activation)?)
} else {
None
});
}
Ok(self)
}
#[allow(dead_code)]
fn year_or(
&mut self,
value: Option<&Value<'gc>>,
default: f64,
) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.year = Some(if let Some(value) = value {
let value = value.coerce_to_f64(self.activation)?;
if value.is_finite() {
Some(value)
} else {
Some(default)
}
} else {
Some(default)
});
}
Ok(self)
}
#[allow(dead_code)]
fn year_opt(&mut self, value: Option<&Value<'gc>>) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.year = match value {
Some(&Value::Undefined) | None => {
self.ignore_next = true;
None
}
Some(value) => Some(Some(value.coerce_to_f64(self.activation)?)),
};
}
Ok(self)
}
#[allow(dead_code)]
fn month(&mut self, value: Option<&Value<'gc>>) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.month = Some(if let Some(value) = value {
Some(value.coerce_to_f64(self.activation)?)
} else {
None
});
}
Ok(self)
}
#[allow(dead_code)]
fn month_or(
&mut self,
value: Option<&Value<'gc>>,
default: f64,
) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.month = Some(if let Some(value) = value {
let value = value.coerce_to_f64(self.activation)?;
if value.is_finite() {
Some(value)
} else {
Some(default)
}
} else {
Some(default)
});
}
Ok(self)
}
#[allow(dead_code)]
fn month_opt(&mut self, value: Option<&Value<'gc>>) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.month = match value {
Some(&Value::Undefined) | None => {
self.ignore_next = true;
None
}
Some(value) => Some(Some(value.coerce_to_f64(self.activation)?)),
};
}
Ok(self)
}
#[allow(dead_code)]
fn day(&mut self, value: Option<&Value<'gc>>) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.day = Some(if let Some(value) = value {
Some(value.coerce_to_f64(self.activation)?)
} else {
None
});
}
Ok(self)
}
#[allow(dead_code)]
fn day_or(
&mut self,
value: Option<&Value<'gc>>,
default: f64,
) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.day = Some(if let Some(value) = value {
let value = value.coerce_to_f64(self.activation)?;
if value.is_finite() {
Some(value)
} else {
Some(default)
}
} else {
Some(default)
});
}
Ok(self)
}
#[allow(dead_code)]
fn day_opt(&mut self, value: Option<&Value<'gc>>) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.day = match value {
Some(&Value::Undefined) | None => {
self.ignore_next = true;
None
}
Some(value) => Some(Some(value.coerce_to_f64(self.activation)?)),
};
}
Ok(self)
}
#[allow(dead_code)]
fn hour(&mut self, value: Option<&Value<'gc>>) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.hour = Some(if let Some(value) = value {
Some(value.coerce_to_f64(self.activation)?)
} else {
None
});
}
Ok(self)
}
#[allow(dead_code)]
fn hour_or(
&mut self,
value: Option<&Value<'gc>>,
default: f64,
) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.hour = Some(if let Some(value) = value {
let value = value.coerce_to_f64(self.activation)?;
if value.is_finite() {
Some(value)
} else {
Some(default)
}
} else {
Some(default)
});
}
Ok(self)
}
#[allow(dead_code)]
fn hour_opt(&mut self, value: Option<&Value<'gc>>) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.hour = match value {
Some(&Value::Undefined) | None => {
self.ignore_next = true;
None
}
Some(value) => Some(Some(value.coerce_to_f64(self.activation)?)),
};
}
Ok(self)
}
#[allow(dead_code)]
fn minute(&mut self, value: Option<&Value<'gc>>) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.minute = Some(if let Some(value) = value {
Some(value.coerce_to_f64(self.activation)?)
} else {
None
});
}
Ok(self)
}
fn minute_or(
&mut self,
value: Option<&Value<'gc>>,
default: f64,
) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.minute = Some(if let Some(value) = value {
let value = value.coerce_to_f64(self.activation)?;
if value.is_finite() {
Some(value)
} else {
Some(default)
}
} else {
Some(default)
});
}
Ok(self)
}
#[allow(dead_code)]
fn minute_opt(&mut self, value: Option<&Value<'gc>>) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.minute = match value {
Some(&Value::Undefined) | None => {
self.ignore_next = true;
None
}
Some(value) => Some(Some(value.coerce_to_f64(self.activation)?)),
};
}
Ok(self)
}
#[allow(dead_code)]
fn second(&mut self, value: Option<&Value<'gc>>) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.second = Some(if let Some(value) = value {
Some(value.coerce_to_f64(self.activation)?)
} else {
None
});
}
Ok(self)
}
#[allow(dead_code)]
fn second_or(
&mut self,
value: Option<&Value<'gc>>,
default: f64,
) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.second = Some(if let Some(value) = value {
let value = value.coerce_to_f64(self.activation)?;
if value.is_finite() {
Some(value)
} else {
Some(default)
}
} else {
Some(default)
});
}
Ok(self)
}
#[allow(dead_code)]
fn second_opt(&mut self, value: Option<&Value<'gc>>) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.second = match value {
Some(&Value::Undefined) | None => {
self.ignore_next = true;
None
}
Some(value) => Some(Some(value.coerce_to_f64(self.activation)?)),
};
}
Ok(self)
}
#[allow(dead_code)]
fn millisecond(&mut self, value: Option<&Value<'gc>>) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.millisecond = Some(if let Some(value) = value {
Some(value.coerce_to_f64(self.activation)?)
} else {
None
});
}
Ok(self)
}
#[allow(dead_code)]
fn millisecond_or(
&mut self,
value: Option<&Value<'gc>>,
default: f64,
) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.millisecond = Some(if let Some(value) = value {
let value = value.coerce_to_f64(self.activation)?;
if value.is_finite() {
Some(value)
} else {
Some(default)
}
} else {
Some(default)
});
}
Ok(self)
}
#[allow(dead_code)]
fn millisecond_opt(&mut self, value: Option<&Value<'gc>>) -> Result<&mut Self, Error<'gc>> {
if !self.ignore_next {
self.millisecond = match value {
Some(&Value::Undefined) | None => {
self.ignore_next = true;
None
}
Some(value) => Some(Some(value.coerce_to_f64(self.activation)?)),
};
}
Ok(self)
}
fn check_value(
&self,
specified: Option<Option<f64>>,
current: impl ToPrimitive,
) -> Option<i64> {
match specified {
Some(Some(value)) if value.is_finite() => Some(value as i64),
Some(_) => None,
None => current.to_i64(),
}
}
fn check_mapped_value(
&self,
specified: Option<Option<f64>>,
map: impl FnOnce(i64) -> i64,
current: impl ToPrimitive,
) -> Option<i64> {
match specified {
Some(Some(value)) if value.is_finite() => Some(map(value as i64)),
Some(_) => None,
None => current.to_i64(),
}
}
fn calculate(&mut self, current: DateObject<'gc>) -> Option<DateTime<Utc>> {
if let Some(current) = current.date_time().map(|v| v.with_timezone(self.timezone)) {
let month_rem = self
.month
.flatten()
.map(|v| v as i64)
.unwrap_or_default()
.div_euclid(12);
let month =
self.check_mapped_value(self.month, |v| v.rem_euclid(12), current.month0())?;
let year = self
.check_mapped_value(self.year, |v| self.year_type.adjust(v), current.year())?
.wrapping_add(month_rem) as i32;
let day = self.check_value(self.day, current.day())?;
let hour = self.check_value(self.hour, current.hour())?;
let minute = self.check_value(self.minute, current.minute())?;
let second = self.check_value(self.second, current.second())?;
let millisecond =
self.check_value(self.millisecond, current.timestamp_subsec_millis())?;
let duration = Duration::days(day - 1)
+ Duration::hours(hour)
+ Duration::minutes(minute)
+ Duration::seconds(second)
+ Duration::milliseconds(millisecond);
if let LocalResult::Single(Some(result)) = current
.timezone()
.ymd_opt(year, (month + 1) as u32, 1)
.and_hms_opt(0, 0, 0)
.map(|date| date.checked_add_signed(duration))
{
return Some(result.with_timezone(&Utc));
}
}
None
}
fn apply(&mut self, object: DateObject<'gc>) -> f64 {
let date = self.calculate(object);
object.set_date_time(self.activation.context.gc_context, date);
if let Some(date) = date {
date.timestamp_millis() as f64
} else {
NAN
}
}
}
fn constructor<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: Object<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
let this = if let Some(object) = this.as_date_object() {
object
} else {
return Ok(Value::Undefined);
};
let timestamp = args.get(0).unwrap_or(&Value::Undefined);
if timestamp != &Value::Undefined {
if args.len() > 1 {
let timezone = activation.context.locale.get_timezone();
// We need a starting value to adjust from.
this.set_date_time(
activation.context.gc_context,
Some(timezone.ymd(0, 1, 1).and_hms(0, 0, 0).into()),
);
DateAdjustment::new(activation, &timezone)
.year_opt(args.get(0))?
.month_opt(args.get(1))?
.day_opt(args.get(2))?
.hour_opt(args.get(3))?
.minute_opt(args.get(4))?
.second_opt(args.get(5))?
.millisecond_opt(args.get(6))?
.adjust_year(|year| if year < 100 { year + 1900 } else { year })
.apply(this);
} else if let LocalResult::Single(time) =
Utc.timestamp_millis_opt(timestamp.coerce_to_f64(activation)? as i64)
{
this.set_date_time(activation.context.gc_context, Some(time))
} else {
this.set_date_time(activation.context.gc_context, None);
}
} else {
this.set_date_time(
activation.context.gc_context,
Some(activation.context.locale.get_current_date_time()),
)
}
Ok(Value::Undefined)
}
fn to_string<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: DateObject<'gc>,
_args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
let date = this.date_time();
if let Some(date) = date {
let local = date.with_timezone(&activation.context.locale.get_timezone());
Ok(AvmString::new(
activation.context.gc_context,
local.format("%a %b %-d %T GMT%z %-Y").to_string(),
)
.into())
} else {
Ok("Invalid Date".into())
}
}
fn get_timezone_offset<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: DateObject<'gc>,
_args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
let date = if let Some(date) = this.date_time() {
date.with_timezone(&activation.context.locale.get_timezone())
} else {
return Ok(NAN.into());
};
let seconds = date.offset().utc_minus_local() as f32;
let minutes = seconds / 60.0;
Ok(minutes.into())
}
fn set_date<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: DateObject<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
if args.is_empty() {
this.set_date_time(activation.context.gc_context, None);
Ok(NAN.into())
} else {
let timezone = activation.context.locale.get_timezone();
let timestamp = DateAdjustment::new(activation, &timezone)
.day(args.get(0))?
.apply(this);
Ok(timestamp.into())
}
}
fn set_utc_date<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: DateObject<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
if args.is_empty() {
this.set_date_time(activation.context.gc_context, None);
Ok(NAN.into())
} else {
let timestamp = DateAdjustment::new(activation, &Utc)
.day(args.get(0))?
.apply(this);
Ok(timestamp.into())
}
}
fn set_year<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: DateObject<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
let timezone = activation.context.locale.get_timezone();
let timestamp = DateAdjustment::new(activation, &timezone)
.year(args.get(0))?
.adjust_year(|year| {
if year >= 0 && year < 100 {
year + 1900
} else {
year
}
})
.apply(this);
Ok(timestamp.into())
}
fn set_hours<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: DateObject<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
let timezone = activation.context.locale.get_timezone();
let timestamp = DateAdjustment::new(activation, &timezone)
.hour(args.get(0))?
.apply(this);
Ok(timestamp.into())
}
fn set_utc_hours<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: DateObject<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
let timestamp = DateAdjustment::new(activation, &Utc)
.hour(args.get(0))?
.minute_opt(args.get(1))?
.second_opt(args.get(2))?
.millisecond_opt(args.get(3))?
.apply(this);
Ok(timestamp.into())
}
fn set_milliseconds<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: DateObject<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
let timezone = activation.context.locale.get_timezone();
let timestamp = DateAdjustment::new(activation, &timezone)
.millisecond(args.get(0))?
.apply(this);
Ok(timestamp.into())
}
fn set_utc_milliseconds<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: DateObject<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
let timestamp = DateAdjustment::new(activation, &Utc)
.millisecond(args.get(0))?
.apply(this);
Ok(timestamp.into())
}
fn set_minutes<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: DateObject<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
let timezone = activation.context.locale.get_timezone();
let timestamp = DateAdjustment::new(activation, &timezone)
.minute_or(args.get(0), -2147483648.0)?
.apply(this);
Ok(timestamp.into())
}
fn set_utc_minutes<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: DateObject<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
let timestamp = DateAdjustment::new(activation, &Utc)
.minute_or(args.get(0), -2147483648.0)?
.second_opt(args.get(1))?
.millisecond_opt(args.get(2))?
.apply(this);
Ok(timestamp.into())
}
fn set_month<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: DateObject<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
let timezone = activation.context.locale.get_timezone();
let timestamp = DateAdjustment::new(activation, &timezone)
.month_or(args.get(0), 0.0)?
.day_opt(args.get(1))?
.apply(this);
Ok(timestamp.into())
}
fn set_utc_month<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: DateObject<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
let timestamp = DateAdjustment::new(activation, &Utc)
.month_or(args.get(0), 0.0)?
.day_opt(args.get(1))?
.apply(this);
Ok(timestamp.into())
}
fn set_seconds<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: DateObject<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
let timezone = activation.context.locale.get_timezone();
let timestamp = DateAdjustment::new(activation, &timezone)
.second(args.get(0))?
.apply(this);
Ok(timestamp.into())
}
fn set_utc_seconds<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: DateObject<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
let timestamp = DateAdjustment::new(activation, &Utc)
.second(args.get(0))?
.millisecond_opt(args.get(1))?
.apply(this);
Ok(timestamp.into())
}
fn set_time<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: DateObject<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
let new_time = args
.get(0)
.unwrap_or(&Value::Undefined)
.coerce_to_f64(activation)?;
if new_time.is_finite() {
let time = Utc.timestamp_millis(new_time as i64);
this.set_date_time(activation.context.gc_context, Some(time));
return Ok(time.timestamp_millis().into());
}
this.set_date_time(activation.context.gc_context, None);
Ok(NAN.into())
}
fn set_full_year<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: DateObject<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
let timezone = activation.context.locale.get_timezone();
let timestamp = DateAdjustment::new(activation, &timezone)
.year(args.get(0))?
.month_opt(args.get(1))?
.day_opt(args.get(2))?
.apply(this);
Ok(timestamp.into())
}
fn set_utc_full_year<'gc>(
activation: &mut Activation<'_, 'gc, '_>,
this: DateObject<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
let timestamp = DateAdjustment::new(activation, &Utc)
.year(args.get(0))?
.month_opt(args.get(1))?
.day_opt(args.get(2))?
.apply(this);
Ok(timestamp.into())
}
pub fn create_date_object<'gc>(
gc_context: MutationContext<'gc, '_>,
date_proto: Object<'gc>,
fn_proto: Option<Object<'gc>>,
) -> Object<'gc> {
FunctionObject::function(
gc_context,
Executable::Native(constructor),
fn_proto,
date_proto,
)
}
pub fn create_proto<'gc>(
gc_context: MutationContext<'gc, '_>,
proto: Object<'gc>,
fn_proto: Object<'gc>,
) -> Object<'gc> {
let date = DateObject::with_date_time(gc_context, Some(proto), None);
let mut object = date.as_script_object().unwrap();
implement_local_getters!(
gc_context,
object,
Some(fn_proto),
"getDate" => Datelike::day,
"getDay" => |date: &DateTime<FixedOffset>| date.weekday().num_days_from_sunday(),
"getFullYear" => Datelike::year,
"getHours" => Timelike::hour,
"getMilliseconds" => DateTime::timestamp_subsec_millis,
"getMinutes" => Timelike::minute,
"getMonth" => Datelike::month0,
"getSeconds" => Timelike::second,
"getYear" => |date: &DateTime<FixedOffset>| date.year() - 1900
);
implement_utc_getters!(
gc_context,
object,
Some(fn_proto),
"valueOf" => DateTime::timestamp_millis,
"getTime" => DateTime::timestamp_millis,
"getUTCDate" => Datelike::day,
"getUTCDay" => |date: &DateTime<Utc>| date.weekday().num_days_from_sunday(),
"getUTCFullYear" => Datelike::year,
"getUTCHours" => Timelike::hour,
"getUTCMilliseconds" => DateTime::timestamp_subsec_millis,
"getUTCMinutes" => Timelike::minute,
"getUTCMonth" => Datelike::month0,
"getUTCSeconds" => Timelike::second,
"getUTCYear" => |date: &DateTime<Utc>| date.year() - 1900
);
implement_methods!(
gc_context,
object,
Some(fn_proto),
"toString" => to_string,
"getTimezoneOffset" => get_timezone_offset,
"setDate" => set_date,
"setUTCDate" => set_utc_date,
"setYear" => set_year,
"setFullYear" => set_full_year,
"setUTCFullYear" => set_utc_full_year,
"setHours" => set_hours,
"setUTCHours" => set_utc_hours,
"setMilliseconds" => set_milliseconds,
"setUTCMilliseconds" => set_utc_milliseconds,
"setMinutes" => set_minutes,
"setUTCMinutes" => set_utc_minutes,
"setMonth" => set_month,
"setUTCMonth" => set_utc_month,
"setSeconds" => set_seconds,
"setUTCSeconds" => set_utc_seconds,
"setTime" => set_time
);
date.into()
}

View File

@ -10,6 +10,7 @@ use crate::avm1::property::Attribute;
use crate::avm1::activation::Activation;
use crate::avm1::object::blur_filter::BlurFilterObject;
use crate::avm1::object::color_transform_object::ColorTransformObject;
use crate::avm1::object::date_object::DateObject;
use crate::avm1::object::transform_object::TransformObject;
use crate::avm1::object::xml_attributes_object::XMLAttributesObject;
use crate::avm1::object::xml_idmap_object::XMLIDMapObject;
@ -27,6 +28,7 @@ use std::fmt::Debug;
pub mod blur_filter;
pub mod color_transform_object;
mod custom_object;
pub mod date_object;
pub mod script_object;
pub mod shared_object;
pub mod sound_object;
@ -57,6 +59,7 @@ pub mod xml_object;
ColorTransformObject(ColorTransformObject<'gc>),
TransformObject(TransformObject<'gc>),
BlurFilterObject(BlurFilterObject<'gc>),
DateObject(DateObject<'gc>),
}
)]
pub trait TObject<'gc>: 'gc + Collect + Debug + Into<Object<'gc>> + Clone + Copy {
@ -418,6 +421,11 @@ pub trait TObject<'gc>: 'gc + Collect + Debug + Into<Object<'gc>> + Clone + Copy
None
}
/// Get the underlying `DateObject`, if it exists
fn as_date_object(&self) -> Option<DateObject<'gc>> {
None
}
/// Get the underlying `ColorTransformObject`, if it exists
fn as_color_transform_object(&self) -> Option<ColorTransformObject<'gc>> {
None

View File

@ -0,0 +1,84 @@
use crate::avm1::activation::Activation;
use crate::avm1::error::Error;
use crate::avm1::{Object, ScriptObject, TObject};
use crate::impl_custom_object;
use chrono::{DateTime, Utc};
use gc_arena::{Collect, GcCell, MutationContext};
use std::fmt;
#[derive(Clone, Copy, Collect)]
#[collect(no_drop)]
pub struct DateObject<'gc>(GcCell<'gc, DateObjectData<'gc>>);
pub struct DateObjectData<'gc> {
/// The underlying script object.
base: ScriptObject<'gc>,
/// The DateTime represented by this object
date_time: Option<DateTime<Utc>>,
}
unsafe impl<'gc> Collect for DateObjectData<'gc> {
fn trace(&self, cc: gc_arena::CollectionContext) {
self.base.trace(cc);
}
}
impl fmt::Debug for DateObject<'_> {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let this = self.0.read();
f.debug_struct("DateObject")
.field("date_time", &this.date_time)
.finish()
}
}
impl<'gc> DateObject<'gc> {
pub fn with_date_time(
gc_context: MutationContext<'gc, '_>,
proto: Option<Object<'gc>>,
date_time: Option<DateTime<Utc>>,
) -> DateObject<'gc> {
DateObject(GcCell::allocate(
gc_context,
DateObjectData {
base: ScriptObject::object(gc_context, proto),
date_time,
},
))
}
pub fn date_time(self) -> Option<DateTime<Utc>> {
self.0.read().date_time
}
pub fn set_date_time(
self,
gc_context: MutationContext<'gc, '_>,
date_time: Option<DateTime<Utc>>,
) {
self.0.write(gc_context).date_time = date_time;
}
}
impl<'gc> TObject<'gc> for DateObject<'gc> {
impl_custom_object!(base);
#[allow(clippy::new_ret_no_self)]
fn create_bare_object(
&self,
activation: &mut Activation<'_, 'gc, '_>,
_this: Object<'gc>,
) -> Result<Object<'gc>, Error<'gc>> {
Ok(DateObject::with_date_time(
activation.context.gc_context,
Some(activation.context.avm1.prototypes.date),
None,
)
.into())
}
fn as_date_object(&self) -> Option<DateObject<'gc>> {
Some(*self)
}
}

View File

@ -846,6 +846,7 @@ mod tests {
use crate::avm2::Avm2;
use crate::backend::audio::NullAudioBackend;
use crate::backend::input::NullInputBackend;
use crate::backend::locale::NullLocaleBackend;
use crate::backend::navigator::NullNavigatorBackend;
use crate::backend::render::NullRenderer;
use crate::backend::storage::MemoryStorageBackend;
@ -895,6 +896,7 @@ mod tests {
library: &mut Library::default(),
navigator: &mut NullNavigatorBackend::new(),
renderer: &mut NullRenderer::new(),
locale: &mut NullLocaleBackend::new(),
system_prototypes: avm1.prototypes().clone(),
mouse_hovered_object: None,
mouse_position: &(Twips::new(0), Twips::new(0)),

View File

@ -5,6 +5,7 @@ use crate::avm1::{Avm1, Object, Timers, UpdateContext};
use crate::avm2::Avm2;
use crate::backend::audio::NullAudioBackend;
use crate::backend::input::NullInputBackend;
use crate::backend::locale::NullLocaleBackend;
use crate::backend::navigator::NullNavigatorBackend;
use crate::backend::render::NullRenderer;
use crate::backend::storage::MemoryStorageBackend;
@ -56,6 +57,7 @@ where
library: &mut Library::default(),
navigator: &mut NullNavigatorBackend::new(),
renderer: &mut NullRenderer::new(),
locale: &mut NullLocaleBackend::new(),
system_prototypes: avm1.prototypes().clone(),
mouse_hovered_object: None,
mouse_position: &(Twips::new(0), Twips::new(0)),

View File

@ -83,6 +83,12 @@ impl<'gc> From<i32> for Value<'gc> {
}
}
impl<'gc> From<i64> for Value<'gc> {
fn from(value: i64) -> Self {
Value::Number(value as f64)
}
}
impl<'gc> From<u32> for Value<'gc> {
fn from(value: u32) -> Self {
Value::Number(f64::from(value))

View File

@ -1,5 +1,6 @@
pub mod audio;
pub mod input;
pub mod locale;
pub mod navigator;
pub mod render;
pub mod storage;

View File

@ -0,0 +1,36 @@
use chrono::{DateTime, FixedOffset, TimeZone, Utc};
pub trait LocaleBackend {
fn get_current_date_time(&self) -> DateTime<Utc>;
fn get_timezone(&self) -> FixedOffset;
}
/// Locale backend that mostly does nothing.
///
/// For tests, this backend will emulate being in Nepal with a local time of 2001-02-03 at 04:05:06.
/// Nepal has a timezone offset of +5:45, and has never used DST.
/// This makes it an ideal candidate for fixed tests.
pub struct NullLocaleBackend {}
impl NullLocaleBackend {
pub fn new() -> Self {
Self {}
}
}
impl LocaleBackend for NullLocaleBackend {
fn get_current_date_time(&self) -> DateTime<Utc> {
self.get_timezone().ymd(2001, 2, 3).and_hms(4, 5, 6).into()
}
fn get_timezone(&self) -> FixedOffset {
FixedOffset::east(20700)
}
}
impl Default for NullLocaleBackend {
fn default() -> Self {
NullLocaleBackend::new()
}
}

View File

@ -5,6 +5,7 @@ use crate::avm1::globals::system::SystemProperties;
use crate::avm1::{Avm1, Object, Timers, Value};
use crate::avm2::Avm2;
use crate::backend::input::InputBackend;
use crate::backend::locale::LocaleBackend;
use crate::backend::storage::StorageBackend;
use crate::backend::{audio::AudioBackend, navigator::NavigatorBackend, render::RenderBackend};
use crate::display_object::EditText;
@ -67,6 +68,9 @@ pub struct UpdateContext<'a, 'gc, 'gc_context> {
/// The storage backend, used for storing persistent state
pub storage: &'a mut dyn StorageBackend,
/// The locale backend, used for localisation and personalisation
pub locale: &'a mut dyn LocaleBackend,
/// The RNG, used by the AVM `RandomNumber` opcode, `Math.random(),` and `random()`.
pub rng: &'a mut SmallRng,
@ -176,6 +180,7 @@ impl<'a, 'gc, 'gc_context> UpdateContext<'a, 'gc, 'gc_context> {
audio: self.audio,
navigator: self.navigator,
renderer: self.renderer,
locale: self.locale,
input: self.input,
storage: self.storage,
rng: self.rng,

View File

@ -5,6 +5,7 @@ use crate::avm1::object::Object;
use crate::avm1::{Avm1, AvmString, TObject, Timers, Value};
use crate::avm2::Avm2;
use crate::backend::input::{InputBackend, MouseCursor};
use crate::backend::locale::LocaleBackend;
use crate::backend::navigator::{NavigatorBackend, RequestOptions};
use crate::backend::storage::StorageBackend;
use crate::backend::{audio::AudioBackend, render::Letterbox, render::RenderBackend};
@ -114,6 +115,7 @@ type Navigator = Box<dyn NavigatorBackend>;
type Renderer = Box<dyn RenderBackend>;
type Input = Box<dyn InputBackend>;
type Storage = Box<dyn StorageBackend>;
type Locale = Box<dyn LocaleBackend>;
pub struct Player {
/// The version of the player we're emulating.
@ -137,6 +139,7 @@ pub struct Player {
renderer: Renderer,
pub navigator: Navigator,
input: Input,
locale: Locale,
transform_stack: TransformStack,
view_matrix: Matrix,
inverse_view_matrix: Matrix,
@ -186,6 +189,7 @@ impl Player {
navigator: Navigator,
input: Input,
storage: Storage,
locale: Locale,
) -> Result<Arc<Mutex<Self>>, Error> {
let fake_movie = Arc::new(SwfMovie::empty(NEWEST_PLAYER_VERSION));
let movie_width = 550;
@ -252,6 +256,7 @@ impl Player {
audio,
navigator,
input,
locale,
self_reference: None,
system: SystemProperties::default(),
instance_counter: 0,
@ -826,6 +831,10 @@ impl Player {
self.input.deref_mut()
}
pub fn locale(&self) -> &Locale {
&self.locale
}
fn run_actions<'gc>(context: &mut UpdateContext<'_, 'gc, '_>) {
// Note that actions can queue further actions, so a while loop is necessary here.
while let Some(actions) = context.action_queue.pop_action() {
@ -999,6 +1008,7 @@ impl Player {
system_properties,
instance_counter,
storage,
locale,
needs_render,
) = (
self.player_version,
@ -1016,6 +1026,7 @@ impl Player {
&mut self.system,
&mut self.instance_counter,
self.storage.deref_mut(),
self.locale.deref_mut(),
&mut self.needs_render,
);
@ -1058,6 +1069,7 @@ impl Player {
system: system_properties,
instance_counter,
storage,
locale,
shared_objects,
unbound_text_fields,
timers,

View File

@ -4,6 +4,7 @@
use approx::assert_abs_diff_eq;
use log::{Metadata, Record};
use ruffle_core::backend::locale::NullLocaleBackend;
use ruffle_core::backend::navigator::{NullExecutor, NullNavigatorBackend};
use ruffle_core::backend::storage::MemoryStorageBackend;
use ruffle_core::backend::{
@ -79,6 +80,7 @@ swf_tests! {
(matrix, "avm1/matrix", 1),
(point, "avm1/point", 1),
(rectangle, "avm1/rectangle", 1),
(date_is_special, "avm1/date_is_special", 1),
(goto_advance1, "avm1/goto_advance1", 2),
(goto_advance2, "avm1/goto_advance2", 2),
(goto_both_ways1, "avm1/goto_both_ways1", 2),
@ -243,6 +245,23 @@ swf_tests! {
(parse_int, "avm1/parse_int", 1),
(bitmap_filter, "avm1/bitmap_filter", 1),
(blur_filter, "avm1/blur_filter", 1),
(date_constructor, "avm1/date/constructor", 1),
(date_set_date, "avm1/date/setDate", 1),
(date_set_full_year, "avm1/date/setFullYear", 1),
(date_set_hours, "avm1/date/setHours", 1),
(date_set_milliseconds, "avm1/date/setMilliseconds", 1),
(date_set_minutes, "avm1/date/setMinutes", 1),
(date_set_month, "avm1/date/setMonth", 1),
(date_set_seconds, "avm1/date/setSeconds", 1),
(date_set_time, "avm1/date/setTime", 1),
(date_set_utc_date, "avm1/date/setUTCDate", 1),
(date_set_utc_full_year, "avm1/date/setUTCFullYear", 1),
(date_set_utc_hours, "avm1/date/setUTCHours", 1),
(date_set_utc_milliseconds, "avm1/date/setUTCMilliseconds", 1),
(date_set_utc_minutes, "avm1/date/setUTCMinutes", 1),
(date_set_utc_month, "avm1/date/setUTCMonth", 1),
(date_set_utc_seconds, "avm1/date/setUTCSeconds", 1),
(date_set_year, "avm1/date/setYear", 1),
(as3_hello_world, "avm2/hello_world", 1),
(as3_function_call, "avm2/function_call", 1),
(as3_function_call_via_call, "avm2/function_call_via_call", 1),
@ -431,6 +450,7 @@ fn run_swf(swf_path: &str, num_frames: u32) -> Result<String, Error> {
Box::new(NullNavigatorBackend::with_base_path(base_path, channel)),
Box::new(NullInputBackend::new()),
Box::new(MemoryStorageBackend::default()),
Box::new(NullLocaleBackend::new()),
)?;
player.lock().unwrap().set_root_movie(Arc::new(movie));

View File

@ -0,0 +1,39 @@
/**
* Defines how an argument to a function should be tested.
*/
class ArgumentDefinition {
var name : String;
var values : Array;
/*
* Construct a new argument defintion with the given name of the argument.
*
* If you include an 'inherit' argument, every value from that will be copied to this.
*/
function ArgumentDefinition(name, inherit) {
this.name = name;
this.values = [];
if (typeof inherit === "object") {
for (var i = 0; i < inherit.values.length; i++) {
this.values.push(inherit.values[i]);
}
}
}
/**
* Adds the specified value as a potential value that may be used for this argument.
*
* If the value cannot be expressed via .toString(), then please specify a name manually.
* For example, {} would print [object Object] and so you should use "{}" as a name.
*
* Returns this object, for chaining method calls.
*/
function add(value, name) {
if (name === undefined) {
name = Utils.stringify(value);
}
this.values.push({name: name, value: value});
return this;
}
}

View File

@ -0,0 +1,216 @@
/**
* Defines how a class should be tested.
*/
class ClassDefinition {
var name : String;
var constructor : Function;
var repr : Function;
var clazz : Object;
/*
* Construct a new class defintion with the given name of the class,
* a function that will always return a new constructed object of that class,
* and a function that can be used to 'represent' the object (such as tracing its properties).
*/
function ClassDefinition(name, clazz, constructor, repr) {
this.name = name;
this.clazz = clazz;
this.constructor = constructor;
this.repr = repr;
}
private function runStaticOverload(name, argNames, argValues) {
trace("\n/// Start of static method test " + this.name + "." + name + "(" + argNames + ")\n");
var constructor = this.constructor;
var repr = this.repr;
var clazz = this.clazz;
var className = this.name;
var runTest = function(args) {
var names = "";
var values = [];
for (var i = 0; i < args.length; i++) {
values.push(args[i].value);
names += args[i].name;
if (i + 1 < args.length) {
names += ", ";
}
}
trace("// " + className + "." + name + "(" + names + ")");
var result = clazz[name].apply(clazz, values);
repr("Return value", result);
};
Utils.cartesianProduct(argValues, runTest);
trace("\n/// End of static method test " + this.name + "." + name + "(" + argNames + ")\n");;
}
private function runOverload(name, argNames, argValues) {
trace("\n/// Start of method test " + this.name + "." + name + "(" + argNames + ")\n");
var constructor = this.constructor;
var repr = this.repr;
var className = this.name;
var runTest = function(args) {
var names = "";
var values = [];
for (var i = 0; i < args.length; i++) {
values.push(args[i].value);
names += args[i].name;
if (i + 1 < args.length) {
names += ", ";
}
}
trace("// " + className + "." + name + "(" + names + ")");
var object = constructor();
var result = object[name].apply(object, values);
repr("Return value", result);
repr("Original object", object);
};
Utils.cartesianProduct(argValues, runTest);
trace("\n/// End of method test " + this.name + "." + name + "(" + argNames + ")\n");
}
private function runConstructor(constructor, argNames, argValues) {
trace("\n/// Start of constructor test new " + this.name + "(" + argNames + ")\n");
var repr = this.repr;
var className = this.name;
var runTest = function(args) {
var names = "";
var values = [];
for (var i = 0; i < args.length; i++) {
values.push(args[i].value);
names += args[i].name;
if (i + 1 < args.length) {
names += ", ";
}
}
trace("// new " + className + "(" + names + ")");
var result = constructor.apply(constructor, values);
repr("New object", result);
};
Utils.cartesianProduct(argValues, runTest);
trace("\n/// End of constructor test new " + this.name + "(" + argNames + ")\n");
}
/**
* Tests the given static method with the specified signature.
*
* Every valid combination of values for every argument will be iterated upon.
*
* After each test, the return value of the function is printed.
*/
function testStaticMethod(name, args) {
var argNames = "";
var argValues = [];
this.runStaticOverload(name, argNames, argValues);
for (var i = 0; i < args.length; i++) {
var arg = args[i];
if (i > 0) {
argNames += ", ";
}
if (arg.values.length < 1) {
throw "Attempted to test static method " + name + " with an empty argument definition!";
}
argValues.push(arg.values);
argNames += arg.name;
this.runStaticOverload(name, argNames, argValues);
}
}
/**
* Tests the given method with the specified signature.
*
* Every valid combination of values for every argument will be iterated upon,
* ran against an always newly constructed object.
*
* After each test, the return value of the method is printed, followed by
* a repr of the original object.
*/
function testMethod(name, args) {
var argNames = "";
var argValues = [];
this.runOverload(name, argNames, argValues);
for (var i = 0; i < args.length; i++) {
var arg = args[i];
if (i > 0) {
argNames += ", ";
}
if (arg.values.length < 1) {
throw "Attempted to test function " + name + " with an empty argument definition!";
}
argValues.push(arg.values);
argNames += arg.name;
this.runOverload(name, argNames, argValues);
}
}
/**
* Tests the given constructor with the specified signature.
*
* Every valid combination of values for every argument will be iterated upon,
* and provided to the given constructor.
*
* Due to AVM1 limitations, the constructor must take in args, switch on the length,
* and call the actual class constructor based on the length.
* See the Date test for an example of this.
*
* After each test, the return value of the constructor is printed using repr.
*/
function testConstructor(constructor, args) {
var argNames = "";
var argValues = [];
this.runConstructor(constructor, argNames, argValues);
for (var i = 0; i < args.length; i++) {
var arg = args[i];
if (i > 0) {
argNames += ", ";
}
if (arg.values.length < 1) {
throw "Attempted to test constructor with an empty argument definition!";
}
argValues.push(arg.values);
argNames += arg.name;
this.runConstructor(constructor, argNames, argValues);
}
}
}

View File

@ -0,0 +1,119 @@
class Utils {
/**
* Given a list of lists, where each list contains every possible value for that group,
* this function will generate the cartesian product and call the given callback with
* each valid set of .
*
* For example, given the input:
* [[1, 2], ["x", "y"], ["purple", "yellow"]]
* You can expect the following behaviour:
* callback([1, "x", "purple"]);
* callback([2, "x", "purple"]);
* callback([1, "y", "purple"]);
* callback([2, "y", "purple"]);
* callback([1, "x", "yellow"]);
* callback([2, "x", "yellow"]);
* callback([1, "y", "yellow"]);
* callback([2, "y", "yellow"]);
*/
static function cartesianProduct(input, callback) {
if (input.length === 0) {
callback([]);
return;
}
var indices = [];
for (var i = 0; i < input.length; i++) {
indices.push(0);
}
while (true) {
var result = [];
for (var i = 0; i < input.length; i++) {
result.push(input[i][indices[i]]);
}
callback(result);
var index = 0;
while(true) {
indices[index]++;
if (indices[index] < input[index].length) {
break;
}
indices[index] = 0;
index++;
if (index === input.length) {
return;
}
}
}
}
/**
* Escapes the given string so that it's valid ActionScript.
*
* For example, escapeString("Hello\tWorld") will result in \"Hello\\tWorld\"
*/
static function escapeString(string) {
var result = "\"";
for (var i = 0; i < result.length; i++) {
var c = string.charAt(i);
if (c === "\"") {
result += "\\\"";
} else if (c == "\\") {
result += "\\\\";
} else if (c == "\n") {
result += "\\n";
} else if (c == "\r") {
result += "\\r";
} else if (c == "\t") {
result += "\\t";
} else if (c == "\b") {
result += "\\b";
} else if (c == "\f") {
result += "\\f";
} else {
result += c;
}
}
return result + "\"";
}
/**
* If the input is a string, this escapes it. Otherwise, returns String(input).
*/
static function stringify(input) {
if (typeof input === "string") {
return Utils.escapeString(input);
} else {
return String(input);
}
}
}
/*
function testCallback(values) {
var result = "[";
for (var i = 0; i < values.length; i++) {
result += values[i];
if (i < values.length - 1) {
result += ", ";
}
}
result += "]";
trace(result);
}
Utils.cartesianProduct([[1, 2], ["x", "y"], ["purple", "yellow"]], testCallback);
*/
/*
trace(Utils.escapeString("Escape \"this\" string\nplease! \b\f\n\r\t\"\\"));
trace(Utils.escapeString("HELLO WORLD"));
*/

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,180 @@
var date = new ArgumentDefinition("date")
.add(0)
.add("31")
.add(32)
.add(-1)
.add(NaN)
.add({}, "{}")
.add(undefined)
.add(null)
.add(true)
.add(false)
.add("invalid string")
.add(Infinity)
.add(32.5);
var month = new ArgumentDefinition("month")
.add(0)
.add("11")
.add(12)
.add(-1)
.add(NaN)
.add({}, "{}")
.add(undefined)
.add(null)
.add(true)
.add(false)
.add("invalid string")
.add(Infinity)
.add(11.5);
var year = new ArgumentDefinition("year")
.add(0)
.add("2000")
.add(-200)
.add(NaN)
.add({}, "{}")
.add(undefined)
.add(null)
.add(true)
.add(false)
.add("invalid string")
.add(Infinity)
.add(7002.5);
var hour = new ArgumentDefinition("hour")
.add(0)
.add("23")
.add(24)
.add(-1)
.add(NaN)
.add({}, "{}")
.add(undefined)
.add(null)
.add(true)
.add(false)
.add("invalid string")
.add(Infinity)
.add(24.5);
var minute = new ArgumentDefinition("minute")
.add(0)
.add("59")
.add(60)
.add(-1)
.add(NaN)
.add({}, "{}")
.add(undefined)
.add(null)
.add(true)
.add(false)
.add("invalid string")
.add(Infinity)
.add(60.5);
var second = new ArgumentDefinition("second", minute);
var millisecond = new ArgumentDefinition("millisecond")
.add(0)
.add("999")
.add(1000)
.add(-1)
.add(NaN)
.add({}, "{}")
.add(undefined)
.add(null)
.add(true)
.add(false)
.add("invalid string")
.add(Infinity)
.add(1000.5);
var time = new ArgumentDefinition("time")
.add(0)
.add("1594844387653")
.add(-1594844387653)
.add(NaN)
.add({}, "{}")
.add(undefined)
.add(null)
.add(true)
.add(false)
.add("invalid string")
.add(Infinity)
.add(5.5);
function constructor() {
switch (arguments.length) {
case 0: return new Date();
case 1: return new Date(arguments[0]);
case 2: return new Date(arguments[0], arguments[1]);
case 3: return new Date(arguments[0], arguments[1], arguments[2]);
case 4: return new Date(arguments[0], arguments[1], arguments[2], arguments[3]);
case 5: return new Date(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);
case 6: return new Date(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);
case 7: return new Date(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6]);
default: throw "Too many args for constructor! Found " + Utils.stringify(arguments.length);
}
}
function defaultConstructor() {
return new Date(1582971753000);
}
function fullRepr(name, date) {
var result = "";
if (date instanceof Date) {
result += name + ": " + Utils.stringify(date) + "\n";
result += name + ".getDate(): " + Utils.stringify(date.getDate()) + "\n";
result += name + ".getDay(): " + Utils.stringify(date.getDay()) + "\n";
result += name + ".getFullYear(): " + Utils.stringify(date.getFullYear()) + "\n";
result += name + ".getHours(): " + Utils.stringify(date.getHours()) + "\n";
result += name + ".getMilliseconds(): " + Utils.stringify(date.getMilliseconds()) + "\n";
result += name + ".getMinutes(): " + Utils.stringify(date.getMinutes()) + "\n";
result += name + ".getMonth(): " + Utils.stringify(date.getMonth()) + "\n";
result += name + ".getSeconds(): " + Utils.stringify(date.getSeconds()) + "\n";
result += name + ".getTime(): " + Utils.stringify(date.getTime()) + "\n";
result += name + ".getTimezoneOffset(): " + Utils.stringify(date.getTimezoneOffset()) + "\n";
result += name + ".getUTCDate(): " + Utils.stringify(date.getUTCDate()) + "\n";
result += name + ".getUTCDay(): " + Utils.stringify(date.getUTCDay()) + "\n";
result += name + ".getUTCFullYear(): " + Utils.stringify(date.getUTCFullYear()) + "\n";
result += name + ".getUTCHours(): " + Utils.stringify(date.getUTCHours()) + "\n";
result += name + ".getUTCMilliseconds(): " + Utils.stringify(date.getUTCMilliseconds()) + "\n";
result += name + ".getUTCMinutes(): " + Utils.stringify(date.getUTCMinutes()) + "\n";
result += name + ".getUTCMonth(): " + Utils.stringify(date.getUTCMonth()) + "\n";
result += name + ".getUTCSeconds(): " + Utils.stringify(date.getUTCSeconds()) + "\n";
result += name + ".getUTCYear(): " + Utils.stringify(date.getUTCYear()) + "\n";
result += name + ".getYear(): " + Utils.stringify(date.getYear()) + "\n";
result += name + ".valueOf(): " + Utils.stringify(date.valueOf()) + "\n";
} else {
result += name + ": " + Utils.stringify(date) + "\n";
}
trace(result);
}
function partialRepr(name, date) {
trace(name + ": " + date + " (" + date.valueOf() + ")\n");
}
//var test = new ClassDefinition("Date", Date, defaultConstructor, fullRepr);
// test.testConstructor(constructor, [year, month, date, hour, minute, second, millisecond]);
//test.testStaticMethod("UTC", [year, month, date, hour, minute, second, millisecond]);
//
//
//
//
//
//
//
//
//
//
//
//
//
//

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,376 @@
/// Start of method test Date.setDate()
// Date.setDate()
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
/// End of method test Date.setDate()
/// Start of method test Date.setDate(date)
// Date.setDate(0)
Return value: 1580466153000
Original object: Fri Jan 31 16:07:33 GMT+0545 2020
Original object.getDate(): 31
Original object.getDay(): 5
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 0
Original object.getSeconds(): 33
Original object.getTime(): 1580466153000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 31
Original object.getUTCDay(): 5
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 0
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1580466153000
// Date.setDate("31")
Return value: 1583144553000
Original object: Mon Mar 2 16:07:33 GMT+0545 2020
Original object.getDate(): 2
Original object.getDay(): 1
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 2
Original object.getSeconds(): 33
Original object.getTime(): 1583144553000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 2
Original object.getUTCDay(): 1
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 2
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1583144553000
// Date.setDate(32)
Return value: 1583230953000
Original object: Tue Mar 3 16:07:33 GMT+0545 2020
Original object.getDate(): 3
Original object.getDay(): 2
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 2
Original object.getSeconds(): 33
Original object.getTime(): 1583230953000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 3
Original object.getUTCDay(): 2
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 2
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1583230953000
// Date.setDate(-1)
Return value: 1580379753000
Original object: Thu Jan 30 16:07:33 GMT+0545 2020
Original object.getDate(): 30
Original object.getDay(): 4
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 0
Original object.getSeconds(): 33
Original object.getTime(): 1580379753000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 30
Original object.getUTCDay(): 4
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 0
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1580379753000
// Date.setDate(NaN)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setDate({})
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setDate(undefined)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setDate(null)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setDate(true)
Return value: 1580552553000
Original object: Sat Feb 1 16:07:33 GMT+0545 2020
Original object.getDate(): 1
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1580552553000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 1
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1580552553000
// Date.setDate(false)
Return value: 1580466153000
Original object: Fri Jan 31 16:07:33 GMT+0545 2020
Original object.getDate(): 31
Original object.getDay(): 5
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 0
Original object.getSeconds(): 33
Original object.getTime(): 1580466153000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 31
Original object.getUTCDay(): 5
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 0
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1580466153000
// Date.setDate("invalid string")
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setDate(Infinity)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setDate(32.5)
Return value: 1583230953000
Original object: Tue Mar 3 16:07:33 GMT+0545 2020
Original object.getDate(): 3
Original object.getDay(): 2
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 2
Original object.getSeconds(): 33
Original object.getTime(): 1583230953000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 3
Original object.getUTCDay(): 2
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 2
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1583230953000
/// End of method test Date.setDate(date)

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,376 @@
/// Start of method test Date.setHours()
// Date.setHours()
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
/// End of method test Date.setHours()
/// Start of method test Date.setHours(hour)
// Date.setHours(0)
Return value: 1582914153000
Original object: Sat Feb 29 00:07:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 0
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582914153000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 28
Original object.getUTCDay(): 5
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 18
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582914153000
// Date.setHours("23")
Return value: 1582996953000
Original object: Sat Feb 29 23:07:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 23
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582996953000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 17
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582996953000
// Date.setHours(24)
Return value: 1583000553000
Original object: Sun Mar 1 00:07:33 GMT+0545 2020
Original object.getDate(): 1
Original object.getDay(): 0
Original object.getFullYear(): 2020
Original object.getHours(): 0
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 2
Original object.getSeconds(): 33
Original object.getTime(): 1583000553000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 18
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1583000553000
// Date.setHours(-1)
Return value: 1582910553000
Original object: Fri Feb 28 23:07:33 GMT+0545 2020
Original object.getDate(): 28
Original object.getDay(): 5
Original object.getFullYear(): 2020
Original object.getHours(): 23
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582910553000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 28
Original object.getUTCDay(): 5
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 17
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582910553000
// Date.setHours(NaN)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setHours({})
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setHours(undefined)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setHours(null)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setHours(true)
Return value: 1582917753000
Original object: Sat Feb 29 01:07:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 1
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582917753000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 28
Original object.getUTCDay(): 5
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 19
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582917753000
// Date.setHours(false)
Return value: 1582914153000
Original object: Sat Feb 29 00:07:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 0
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582914153000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 28
Original object.getUTCDay(): 5
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 18
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582914153000
// Date.setHours("invalid string")
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setHours(Infinity)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setHours(24.5)
Return value: 1583000553000
Original object: Sun Mar 1 00:07:33 GMT+0545 2020
Original object.getDate(): 1
Original object.getDay(): 0
Original object.getFullYear(): 2020
Original object.getHours(): 0
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 2
Original object.getSeconds(): 33
Original object.getTime(): 1583000553000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 18
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1583000553000
/// End of method test Date.setHours(hour)

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,376 @@
/// Start of method test Date.setMilliseconds()
// Date.setMilliseconds()
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
/// End of method test Date.setMilliseconds()
/// Start of method test Date.setMilliseconds(millisecond)
// Date.setMilliseconds(0)
Return value: 1582971753000
Original object: Sat Feb 29 16:07:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582971753000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971753000
// Date.setMilliseconds("999")
Return value: 1582971753999
Original object: Sat Feb 29 16:07:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 999
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582971753999
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 999
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971753999
// Date.setMilliseconds(1000)
Return value: 1582971754000
Original object: Sat Feb 29 16:07:34 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 34
Original object.getTime(): 1582971754000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 34
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971754000
// Date.setMilliseconds(-1)
Return value: 1582971752999
Original object: Sat Feb 29 16:07:32 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 999
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 32
Original object.getTime(): 1582971752999
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 999
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 32
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971752999
// Date.setMilliseconds(NaN)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setMilliseconds({})
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setMilliseconds(undefined)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setMilliseconds(null)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setMilliseconds(true)
Return value: 1582971753001
Original object: Sat Feb 29 16:07:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 1
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582971753001
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 1
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971753001
// Date.setMilliseconds(false)
Return value: 1582971753000
Original object: Sat Feb 29 16:07:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582971753000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971753000
// Date.setMilliseconds("invalid string")
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setMilliseconds(Infinity)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setMilliseconds(1000.5)
Return value: 1582971754000
Original object: Sat Feb 29 16:07:34 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 34
Original object.getTime(): 1582971754000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 34
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971754000
/// End of method test Date.setMilliseconds(millisecond)

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,376 @@
/// Start of method test Date.setMinutes()
// Date.setMinutes()
Return value: -127266047547000
Original object: Sat Feb 6 13:52:33 GMT+0545 -2063
Original object.getDate(): 6
Original object.getDay(): 6
Original object.getFullYear(): -2063
Original object.getHours(): 13
Original object.getMilliseconds(): 0
Original object.getMinutes(): 52
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): -127266047547000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 6
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): -2063
Original object.getUTCHours(): 8
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 7
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): -3963
Original object.getYear(): -3963
Original object.valueOf(): -127266047547000
/// End of method test Date.setMinutes()
/// Start of method test Date.setMinutes(minute)
// Date.setMinutes(0)
Return value: 1582971333000
Original object: Sat Feb 29 16:00:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 0
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582971333000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 15
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971333000
// Date.setMinutes("59")
Return value: 1582974873000
Original object: Sat Feb 29 16:59:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 59
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582974873000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 11
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 14
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582974873000
// Date.setMinutes(60)
Return value: 1582974933000
Original object: Sat Feb 29 17:00:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 17
Original object.getMilliseconds(): 0
Original object.getMinutes(): 0
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582974933000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 11
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 15
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582974933000
// Date.setMinutes(-1)
Return value: 1582971273000
Original object: Sat Feb 29 15:59:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 15
Original object.getMilliseconds(): 0
Original object.getMinutes(): 59
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582971273000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 14
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971273000
// Date.setMinutes(NaN)
Return value: -127266047547000
Original object: Sat Feb 6 13:52:33 GMT+0545 -2063
Original object.getDate(): 6
Original object.getDay(): 6
Original object.getFullYear(): -2063
Original object.getHours(): 13
Original object.getMilliseconds(): 0
Original object.getMinutes(): 52
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): -127266047547000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 6
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): -2063
Original object.getUTCHours(): 8
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 7
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): -3963
Original object.getYear(): -3963
Original object.valueOf(): -127266047547000
// Date.setMinutes({})
Return value: -127266047547000
Original object: Sat Feb 6 13:52:33 GMT+0545 -2063
Original object.getDate(): 6
Original object.getDay(): 6
Original object.getFullYear(): -2063
Original object.getHours(): 13
Original object.getMilliseconds(): 0
Original object.getMinutes(): 52
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): -127266047547000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 6
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): -2063
Original object.getUTCHours(): 8
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 7
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): -3963
Original object.getYear(): -3963
Original object.valueOf(): -127266047547000
// Date.setMinutes(undefined)
Return value: -127266047547000
Original object: Sat Feb 6 13:52:33 GMT+0545 -2063
Original object.getDate(): 6
Original object.getDay(): 6
Original object.getFullYear(): -2063
Original object.getHours(): 13
Original object.getMilliseconds(): 0
Original object.getMinutes(): 52
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): -127266047547000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 6
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): -2063
Original object.getUTCHours(): 8
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 7
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): -3963
Original object.getYear(): -3963
Original object.valueOf(): -127266047547000
// Date.setMinutes(null)
Return value: -127266047547000
Original object: Sat Feb 6 13:52:33 GMT+0545 -2063
Original object.getDate(): 6
Original object.getDay(): 6
Original object.getFullYear(): -2063
Original object.getHours(): 13
Original object.getMilliseconds(): 0
Original object.getMinutes(): 52
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): -127266047547000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 6
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): -2063
Original object.getUTCHours(): 8
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 7
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): -3963
Original object.getYear(): -3963
Original object.valueOf(): -127266047547000
// Date.setMinutes(true)
Return value: 1582971393000
Original object: Sat Feb 29 16:01:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 1
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582971393000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 16
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971393000
// Date.setMinutes(false)
Return value: 1582971333000
Original object: Sat Feb 29 16:00:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 0
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582971333000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 15
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971333000
// Date.setMinutes("invalid string")
Return value: -127266047547000
Original object: Sat Feb 6 13:52:33 GMT+0545 -2063
Original object.getDate(): 6
Original object.getDay(): 6
Original object.getFullYear(): -2063
Original object.getHours(): 13
Original object.getMilliseconds(): 0
Original object.getMinutes(): 52
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): -127266047547000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 6
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): -2063
Original object.getUTCHours(): 8
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 7
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): -3963
Original object.getYear(): -3963
Original object.valueOf(): -127266047547000
// Date.setMinutes(Infinity)
Return value: -127266047547000
Original object: Sat Feb 6 13:52:33 GMT+0545 -2063
Original object.getDate(): 6
Original object.getDay(): 6
Original object.getFullYear(): -2063
Original object.getHours(): 13
Original object.getMilliseconds(): 0
Original object.getMinutes(): 52
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): -127266047547000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 6
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): -2063
Original object.getUTCHours(): 8
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 7
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): -3963
Original object.getYear(): -3963
Original object.valueOf(): -127266047547000
// Date.setMinutes(60.5)
Return value: 1582974933000
Original object: Sat Feb 29 17:00:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 17
Original object.getMilliseconds(): 0
Original object.getMinutes(): 0
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582974933000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 11
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 15
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582974933000
/// End of method test Date.setMinutes(minute)

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,376 @@
/// Start of method test Date.setSeconds()
// Date.setSeconds()
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
/// End of method test Date.setSeconds()
/// Start of method test Date.setSeconds(second)
// Date.setSeconds(0)
Return value: 1582971720000
Original object: Sat Feb 29 16:07:00 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 0
Original object.getTime(): 1582971720000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 0
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971720000
// Date.setSeconds("59")
Return value: 1582971779000
Original object: Sat Feb 29 16:07:59 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 59
Original object.getTime(): 1582971779000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 59
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971779000
// Date.setSeconds(60)
Return value: 1582971780000
Original object: Sat Feb 29 16:08:00 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 8
Original object.getMonth(): 1
Original object.getSeconds(): 0
Original object.getTime(): 1582971780000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 23
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 0
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971780000
// Date.setSeconds(-1)
Return value: 1582971719000
Original object: Sat Feb 29 16:06:59 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 6
Original object.getMonth(): 1
Original object.getSeconds(): 59
Original object.getTime(): 1582971719000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 21
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 59
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971719000
// Date.setSeconds(NaN)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setSeconds({})
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setSeconds(undefined)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setSeconds(null)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setSeconds(true)
Return value: 1582971721000
Original object: Sat Feb 29 16:07:01 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 1
Original object.getTime(): 1582971721000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 1
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971721000
// Date.setSeconds(false)
Return value: 1582971720000
Original object: Sat Feb 29 16:07:00 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 0
Original object.getTime(): 1582971720000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 0
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971720000
// Date.setSeconds("invalid string")
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setSeconds(Infinity)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setSeconds(60.5)
Return value: 1582971780000
Original object: Sat Feb 29 16:08:00 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 8
Original object.getMonth(): 1
Original object.getSeconds(): 0
Original object.getTime(): 1582971780000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 23
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 0
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971780000
/// End of method test Date.setSeconds(second)

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,350 @@
/// Start of method test Date.setTime()
// Date.setTime()
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
/// End of method test Date.setTime()
/// Start of method test Date.setTime(time)
// Date.setTime(0)
Return value: 0
Original object: Thu Jan 1 05:45:00 GMT+0545 1970
Original object.getDate(): 1
Original object.getDay(): 4
Original object.getFullYear(): 1970
Original object.getHours(): 5
Original object.getMilliseconds(): 0
Original object.getMinutes(): 45
Original object.getMonth(): 0
Original object.getSeconds(): 0
Original object.getTime(): 0
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 1
Original object.getUTCDay(): 4
Original object.getUTCFullYear(): 1970
Original object.getUTCHours(): 0
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 0
Original object.getUTCMonth(): 0
Original object.getUTCSeconds(): 0
Original object.getUTCYear(): 70
Original object.getYear(): 70
Original object.valueOf(): 0
// Date.setTime("1594844387653")
Return value: 1594844387653
Original object: Thu Jul 16 02:04:47 GMT+0545 2020
Original object.getDate(): 16
Original object.getDay(): 4
Original object.getFullYear(): 2020
Original object.getHours(): 2
Original object.getMilliseconds(): 653
Original object.getMinutes(): 4
Original object.getMonth(): 6
Original object.getSeconds(): 47
Original object.getTime(): 1594844387653
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 15
Original object.getUTCDay(): 3
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 20
Original object.getUTCMilliseconds(): 653
Original object.getUTCMinutes(): 19
Original object.getUTCMonth(): 6
Original object.getUTCSeconds(): 47
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1594844387653
// Date.setTime(-1594844387653)
Return value: -1594844387653
Original object: Thu Jun 19 09:25:12 GMT+0545 1919
Original object.getDate(): 19
Original object.getDay(): 4
Original object.getFullYear(): 1919
Original object.getHours(): 9
Original object.getMilliseconds(): 347
Original object.getMinutes(): 25
Original object.getMonth(): 5
Original object.getSeconds(): 12
Original object.getTime(): -1594844387653
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 19
Original object.getUTCDay(): 4
Original object.getUTCFullYear(): 1919
Original object.getUTCHours(): 3
Original object.getUTCMilliseconds(): 347
Original object.getUTCMinutes(): 40
Original object.getUTCMonth(): 5
Original object.getUTCSeconds(): 12
Original object.getUTCYear(): 19
Original object.getYear(): 19
Original object.valueOf(): -1594844387653
// Date.setTime(NaN)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setTime({})
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setTime(undefined)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setTime(null)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setTime(true)
Return value: 1
Original object: Thu Jan 1 05:45:00 GMT+0545 1970
Original object.getDate(): 1
Original object.getDay(): 4
Original object.getFullYear(): 1970
Original object.getHours(): 5
Original object.getMilliseconds(): 1
Original object.getMinutes(): 45
Original object.getMonth(): 0
Original object.getSeconds(): 0
Original object.getTime(): 1
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 1
Original object.getUTCDay(): 4
Original object.getUTCFullYear(): 1970
Original object.getUTCHours(): 0
Original object.getUTCMilliseconds(): 1
Original object.getUTCMinutes(): 0
Original object.getUTCMonth(): 0
Original object.getUTCSeconds(): 0
Original object.getUTCYear(): 70
Original object.getYear(): 70
Original object.valueOf(): 1
// Date.setTime(false)
Return value: 0
Original object: Thu Jan 1 05:45:00 GMT+0545 1970
Original object.getDate(): 1
Original object.getDay(): 4
Original object.getFullYear(): 1970
Original object.getHours(): 5
Original object.getMilliseconds(): 0
Original object.getMinutes(): 45
Original object.getMonth(): 0
Original object.getSeconds(): 0
Original object.getTime(): 0
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 1
Original object.getUTCDay(): 4
Original object.getUTCFullYear(): 1970
Original object.getUTCHours(): 0
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 0
Original object.getUTCMonth(): 0
Original object.getUTCSeconds(): 0
Original object.getUTCYear(): 70
Original object.getYear(): 70
Original object.valueOf(): 0
// Date.setTime("invalid string")
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setTime(Infinity)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setTime(5.5)
Return value: 5
Original object: Thu Jan 1 05:45:00 GMT+0545 1970
Original object.getDate(): 1
Original object.getDay(): 4
Original object.getFullYear(): 1970
Original object.getHours(): 5
Original object.getMilliseconds(): 5
Original object.getMinutes(): 45
Original object.getMonth(): 0
Original object.getSeconds(): 0
Original object.getTime(): 5
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 1
Original object.getUTCDay(): 4
Original object.getUTCFullYear(): 1970
Original object.getUTCHours(): 0
Original object.getUTCMilliseconds(): 5
Original object.getUTCMinutes(): 0
Original object.getUTCMonth(): 0
Original object.getUTCSeconds(): 0
Original object.getUTCYear(): 70
Original object.getYear(): 70
Original object.valueOf(): 5
/// End of method test Date.setTime(time)

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,376 @@
/// Start of method test Date.setUTCDate()
// Date.setUTCDate()
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
/// End of method test Date.setUTCDate()
/// Start of method test Date.setUTCDate(date)
// Date.setUTCDate(0)
Return value: 1580466153000
Original object: Fri Jan 31 16:07:33 GMT+0545 2020
Original object.getDate(): 31
Original object.getDay(): 5
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 0
Original object.getSeconds(): 33
Original object.getTime(): 1580466153000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 31
Original object.getUTCDay(): 5
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 0
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1580466153000
// Date.setUTCDate("31")
Return value: 1583144553000
Original object: Mon Mar 2 16:07:33 GMT+0545 2020
Original object.getDate(): 2
Original object.getDay(): 1
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 2
Original object.getSeconds(): 33
Original object.getTime(): 1583144553000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 2
Original object.getUTCDay(): 1
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 2
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1583144553000
// Date.setUTCDate(32)
Return value: 1583230953000
Original object: Tue Mar 3 16:07:33 GMT+0545 2020
Original object.getDate(): 3
Original object.getDay(): 2
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 2
Original object.getSeconds(): 33
Original object.getTime(): 1583230953000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 3
Original object.getUTCDay(): 2
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 2
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1583230953000
// Date.setUTCDate(-1)
Return value: 1580379753000
Original object: Thu Jan 30 16:07:33 GMT+0545 2020
Original object.getDate(): 30
Original object.getDay(): 4
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 0
Original object.getSeconds(): 33
Original object.getTime(): 1580379753000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 30
Original object.getUTCDay(): 4
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 0
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1580379753000
// Date.setUTCDate(NaN)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setUTCDate({})
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setUTCDate(undefined)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setUTCDate(null)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setUTCDate(true)
Return value: 1580552553000
Original object: Sat Feb 1 16:07:33 GMT+0545 2020
Original object.getDate(): 1
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1580552553000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 1
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1580552553000
// Date.setUTCDate(false)
Return value: 1580466153000
Original object: Fri Jan 31 16:07:33 GMT+0545 2020
Original object.getDate(): 31
Original object.getDay(): 5
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 0
Original object.getSeconds(): 33
Original object.getTime(): 1580466153000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 31
Original object.getUTCDay(): 5
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 0
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1580466153000
// Date.setUTCDate("invalid string")
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setUTCDate(Infinity)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setUTCDate(32.5)
Return value: 1583230953000
Original object: Tue Mar 3 16:07:33 GMT+0545 2020
Original object.getDate(): 3
Original object.getDay(): 2
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 2
Original object.getSeconds(): 33
Original object.getTime(): 1583230953000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 3
Original object.getUTCDay(): 2
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 2
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1583230953000
/// End of method test Date.setUTCDate(date)

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,376 @@
/// Start of method test Date.setUTCMilliseconds()
// Date.setUTCMilliseconds()
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
/// End of method test Date.setUTCMilliseconds()
/// Start of method test Date.setUTCMilliseconds(millisecond)
// Date.setUTCMilliseconds(0)
Return value: 1582971753000
Original object: Sat Feb 29 16:07:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582971753000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971753000
// Date.setUTCMilliseconds("999")
Return value: 1582971753999
Original object: Sat Feb 29 16:07:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 999
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582971753999
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 999
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971753999
// Date.setUTCMilliseconds(1000)
Return value: 1582971754000
Original object: Sat Feb 29 16:07:34 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 34
Original object.getTime(): 1582971754000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 34
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971754000
// Date.setUTCMilliseconds(-1)
Return value: 1582971752999
Original object: Sat Feb 29 16:07:32 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 999
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 32
Original object.getTime(): 1582971752999
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 999
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 32
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971752999
// Date.setUTCMilliseconds(NaN)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setUTCMilliseconds({})
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setUTCMilliseconds(undefined)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setUTCMilliseconds(null)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setUTCMilliseconds(true)
Return value: 1582971753001
Original object: Sat Feb 29 16:07:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 1
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582971753001
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 1
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971753001
// Date.setUTCMilliseconds(false)
Return value: 1582971753000
Original object: Sat Feb 29 16:07:33 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 1582971753000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971753000
// Date.setUTCMilliseconds("invalid string")
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setUTCMilliseconds(Infinity)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setUTCMilliseconds(1000.5)
Return value: 1582971754000
Original object: Sat Feb 29 16:07:34 GMT+0545 2020
Original object.getDate(): 29
Original object.getDay(): 6
Original object.getFullYear(): 2020
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 34
Original object.getTime(): 1582971754000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): 2020
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 34
Original object.getUTCYear(): 120
Original object.getYear(): 120
Original object.valueOf(): 1582971754000
/// End of method test Date.setUTCMilliseconds(millisecond)

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,350 @@
/// Start of method test Date.setYear()
// Date.setYear()
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
/// End of method test Date.setYear()
/// Start of method test Date.setYear(year)
// Date.setYear(0)
Return value: -2203853847000
Original object: Thu Mar 1 16:07:33 GMT+0545 1900
Original object.getDate(): 1
Original object.getDay(): 4
Original object.getFullYear(): 1900
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 2
Original object.getSeconds(): 33
Original object.getTime(): -2203853847000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 1
Original object.getUTCDay(): 4
Original object.getUTCFullYear(): 1900
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 2
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 0
Original object.getYear(): 0
Original object.valueOf(): -2203853847000
// Date.setYear("2000")
Return value: 951819753000
Original object: Tue Feb 29 16:07:33 GMT+0545 2000
Original object.getDate(): 29
Original object.getDay(): 2
Original object.getFullYear(): 2000
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 1
Original object.getSeconds(): 33
Original object.getTime(): 951819753000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 29
Original object.getUTCDay(): 2
Original object.getUTCFullYear(): 2000
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 1
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 100
Original object.getYear(): 100
Original object.valueOf(): 951819753000
// Date.setYear(-200)
Return value: -68473431447000
Original object: Sat Mar 1 16:07:33 GMT+0545 -200
Original object.getDate(): 1
Original object.getDay(): 6
Original object.getFullYear(): -200
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 2
Original object.getSeconds(): 33
Original object.getTime(): -68473431447000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 1
Original object.getUTCDay(): 6
Original object.getUTCFullYear(): -200
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 2
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): -2100
Original object.getYear(): -2100
Original object.valueOf(): -68473431447000
// Date.setYear(NaN)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setYear({})
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setYear(undefined)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setYear(null)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setYear(true)
Return value: -2172317847000
Original object: Fri Mar 1 16:07:33 GMT+0545 1901
Original object.getDate(): 1
Original object.getDay(): 5
Original object.getFullYear(): 1901
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 2
Original object.getSeconds(): 33
Original object.getTime(): -2172317847000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 1
Original object.getUTCDay(): 5
Original object.getUTCFullYear(): 1901
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 2
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 1
Original object.getYear(): 1
Original object.valueOf(): -2172317847000
// Date.setYear(false)
Return value: -2203853847000
Original object: Thu Mar 1 16:07:33 GMT+0545 1900
Original object.getDate(): 1
Original object.getDay(): 4
Original object.getFullYear(): 1900
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 2
Original object.getSeconds(): 33
Original object.getTime(): -2203853847000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 1
Original object.getUTCDay(): 4
Original object.getUTCFullYear(): 1900
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 2
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 0
Original object.getYear(): 0
Original object.valueOf(): -2203853847000
// Date.setYear("invalid string")
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setYear(Infinity)
Return value: NaN
Original object: Invalid Date
Original object.getDate(): NaN
Original object.getDay(): NaN
Original object.getFullYear(): NaN
Original object.getHours(): NaN
Original object.getMilliseconds(): NaN
Original object.getMinutes(): NaN
Original object.getMonth(): NaN
Original object.getSeconds(): NaN
Original object.getTime(): NaN
Original object.getTimezoneOffset(): NaN
Original object.getUTCDate(): NaN
Original object.getUTCDay(): NaN
Original object.getUTCFullYear(): NaN
Original object.getUTCHours(): NaN
Original object.getUTCMilliseconds(): NaN
Original object.getUTCMinutes(): NaN
Original object.getUTCMonth(): NaN
Original object.getUTCSeconds(): NaN
Original object.getUTCYear(): NaN
Original object.getYear(): NaN
Original object.valueOf(): NaN
// Date.setYear(7002.5)
Return value: 158799694953000
Original object: Mon Mar 1 16:07:33 GMT+0545 7002
Original object.getDate(): 1
Original object.getDay(): 1
Original object.getFullYear(): 7002
Original object.getHours(): 16
Original object.getMilliseconds(): 0
Original object.getMinutes(): 7
Original object.getMonth(): 2
Original object.getSeconds(): 33
Original object.getTime(): 158799694953000
Original object.getTimezoneOffset(): -345
Original object.getUTCDate(): 1
Original object.getUTCDay(): 1
Original object.getUTCFullYear(): 7002
Original object.getUTCHours(): 10
Original object.getUTCMilliseconds(): 0
Original object.getUTCMinutes(): 22
Original object.getUTCMonth(): 2
Original object.getUTCSeconds(): 33
Original object.getUTCYear(): 5102
Original object.getYear(): 5102
Original object.valueOf(): 158799694953000
/// End of method test Date.setYear(year)

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,114 @@
// date.getDate()
undefined
// date.getDay()
undefined
// date.getFullYear()
undefined
// date.getHours()
undefined
// date.getMilliseconds()
undefined
// date.getMinutes()
undefined
// date.getMonth()
undefined
// date.getSeconds()
undefined
// date.getTime()
undefined
// date.getTimezoneOffset()
undefined
// date.getUTCDate()
undefined
// date.getUTCDay()
undefined
// date.getUTCFullYear()
undefined
// date.getUTCHours()
undefined
// date.getUTCMilliseconds()
undefined
// date.getUTCMinutes()
undefined
// date.getUTCMonth()
undefined
// date.getUTCSeconds()
undefined
// date.getUTCYear()
undefined
// date.getYear()
undefined
// date.setDate(1)
undefined
// date.setFullYear(1)
undefined
// date.setHours(1)
undefined
// date.setMilliseconds(1)
undefined
// date.setMinutes(1)
undefined
// date.setMonth(1)
undefined
// date.setSeconds(1)
undefined
// date.setTime(1)
undefined
// date.setUTCDate(1)
undefined
// date.setUTCFullYear(1)
undefined
// date.setUTCHours(1)
undefined
// date.setUTCMilliseconds(1)
undefined
// date.setUTCMinutes(1)
undefined
// date.setUTCMonth(1)
undefined
// date.setUTCSeconds(1)
undefined
// date.setYear(1)
undefined
// date.toString()
undefined
// date.valueOf()
undefined

Binary file not shown.

Binary file not shown.

View File

@ -21,6 +21,7 @@ use std::sync::Arc;
use std::time::Instant;
use crate::storage::DiskStorageBackend;
use ruffle_core::backend::locale::NullLocaleBackend;
use ruffle_core::tag_utils::SwfMovie;
use std::rc::Rc;
use winit::dpi::{LogicalSize, PhysicalPosition};
@ -166,7 +167,8 @@ fn run_player(
let storage = Box::new(DiskStorageBackend::new(
input_path.file_name().unwrap_or_default().as_ref(),
));
let player = Player::new(renderer, audio, navigator, input, storage)?;
let locale = Box::new(NullLocaleBackend::new());
let player = Player::new(renderer, audio, navigator, input, storage, locale)?;
player.lock().unwrap().set_root_movie(Arc::new(movie));
player.lock().unwrap().set_is_playing(true); // Desktop player will auto-play.

View File

@ -4,6 +4,7 @@ use image::RgbaImage;
use indicatif::{ProgressBar, ProgressStyle};
use ruffle_core::backend::audio::NullAudioBackend;
use ruffle_core::backend::input::NullInputBackend;
use ruffle_core::backend::locale::NullLocaleBackend;
use ruffle_core::backend::navigator::NullNavigatorBackend;
use ruffle_core::backend::storage::MemoryStorageBackend;
use ruffle_core::tag_utils::SwfMovie;
@ -87,6 +88,7 @@ fn take_screenshot(
Box::new(NullNavigatorBackend::new()),
Box::new(NullInputBackend::new()),
Box::new(MemoryStorageBackend::default()),
Box::new(NullLocaleBackend::new()),
)?;
player

View File

@ -34,6 +34,7 @@ ruffle_render_webgl = { path = "../render/webgl", optional = true }
url = "2.1.1"
wasm-bindgen = "0.2.65"
wasm-bindgen-futures = "0.4.17"
chrono = { version = "0.4", features = ["wasmbind"] }
[dependencies.ruffle_core]
path = "../core"

View File

@ -10,6 +10,7 @@ use crate::storage::LocalStorageBackend;
use crate::{audio::WebAudioBackend, input::WebInputBackend, navigator::WebNavigatorBackend};
use generational_arena::{Arena, Index};
use js_sys::Uint8Array;
use ruffle_core::backend::locale::NullLocaleBackend;
use ruffle_core::backend::render::RenderBackend;
use ruffle_core::backend::storage::MemoryStorageBackend;
use ruffle_core::backend::storage::StorageBackend;
@ -157,6 +158,7 @@ impl Ruffle {
let audio = Box::new(WebAudioBackend::new()?);
let navigator = Box::new(WebNavigatorBackend::new());
let input = Box::new(WebInputBackend::new(&canvas));
let locale = Box::new(NullLocaleBackend::new());
let current_domain = window.location().href().unwrap();
@ -168,7 +170,8 @@ impl Ruffle {
})
.unwrap_or_else(|| Box::new(MemoryStorageBackend::default()));
let core = ruffle_core::Player::new(renderer, audio, navigator, input, local_storage)?;
let core =
ruffle_core::Player::new(renderer, audio, navigator, input, local_storage, locale)?;
// Create instance.
let instance = RuffleInstance {