avm1: Implement Date - #249
This commit is contained in:
parent
3d30ec67e2
commit
86eb6f2e50
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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()
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
|
@ -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)),
|
||||
|
|
|
@ -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)),
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
pub mod audio;
|
||||
pub mod input;
|
||||
pub mod locale;
|
||||
pub mod navigator;
|
||||
pub mod render;
|
||||
pub mod storage;
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
}
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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));
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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.
|
@ -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.
|
@ -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.
|
@ -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.
|
@ -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.
|
@ -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.
|
@ -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.
|
@ -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.
|
@ -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.
|
@ -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.
|
@ -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.
|
@ -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.
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue