diff --git a/src/lib/js/value.rs b/src/lib/js/value.rs index f8c8d2ae46..c703099dbd 100644 --- a/src/lib/js/value.rs +++ b/src/lib/js/value.rs @@ -142,8 +142,8 @@ impl ValueData { match *self { ValueData::Object(_, _) => true, ValueData::String(ref s) if !s.is_empty() => true, - ValueData::Number(n) if n >= 1.0 && n % 1.0 == 0.0 => true, - ValueData::Integer(n) if n > 1 => true, + ValueData::Number(n) if n != 0.0 && !n.is_nan() => true, + ValueData::Integer(n) if n != 0 => true, ValueData::Boolean(v) => v, _ => false, } @@ -880,4 +880,21 @@ mod tests { assert_eq!(obj.get_field_slice("foo").to_string(), "bar"); } + #[test] + fn check_integer_is_true() { + assert_eq!(1.to_value().is_true(), true); + assert_eq!(0.to_value().is_true(), false); + assert_eq!((-1).to_value().is_true(), true); + } + + #[test] + fn check_number_is_true() { + assert_eq!(1.0.to_value().is_true(), true); + assert_eq!(0.1.to_value().is_true(), true); + assert_eq!(0.0.to_value().is_true(), false); + assert_eq!((-0.0).to_value().is_true(), false); + assert_eq!((-1.0).to_value().is_true(), true); + assert_eq!(NAN.to_value().is_true(), false); + } + }