@@ -273,16 +273,94 @@ TEST(ValueTest, NaNConstructor)
273273
274274TEST (ValueTest, CopyConstructor)
275275{
276- Value v1 (50 );
277- Value v2 (v1);
278- ASSERT_EQ (v2.toInt (), 50 );
279- ASSERT_EQ (v1.type (), v2.type ());
280- ASSERT_FALSE (v2.isInfinity ());
281- ASSERT_FALSE (v2.isNegativeInfinity ());
282- ASSERT_FALSE (v2.isNaN ());
283- ASSERT_TRUE (v2.isNumber ());
284- ASSERT_FALSE (v2.isBool ());
285- ASSERT_FALSE (v2.isString ());
276+ {
277+ Value v1 (50 );
278+ Value v2 (v1);
279+ ASSERT_EQ (v1.toInt (), v2.toInt ());
280+ ASSERT_EQ (v1.type (), v2.type ());
281+ ASSERT_FALSE (v2.isInfinity ());
282+ ASSERT_FALSE (v2.isNegativeInfinity ());
283+ ASSERT_FALSE (v2.isNaN ());
284+ ASSERT_TRUE (v2.isNumber ());
285+ ASSERT_FALSE (v2.isBool ());
286+ ASSERT_FALSE (v2.isString ());
287+ }
288+
289+ {
290+ Value v1 (5.5 );
291+ Value v2 (v1);
292+ ASSERT_EQ (v1.toDouble (), v2.toDouble ());
293+ ASSERT_EQ (v1.type (), v2.type ());
294+ ASSERT_FALSE (v2.isInfinity ());
295+ ASSERT_FALSE (v2.isNegativeInfinity ());
296+ ASSERT_FALSE (v2.isNaN ());
297+ ASSERT_TRUE (v2.isNumber ());
298+ ASSERT_FALSE (v2.isBool ());
299+ ASSERT_FALSE (v2.isString ());
300+ }
301+
302+ {
303+ Value v1 (true );
304+ Value v2 (v1);
305+ ASSERT_EQ (v1.toBool (), v2.toBool ());
306+ ASSERT_EQ (v1.type (), v2.type ());
307+ ASSERT_FALSE (v2.isInfinity ());
308+ ASSERT_FALSE (v2.isNegativeInfinity ());
309+ ASSERT_FALSE (v2.isNaN ());
310+ ASSERT_FALSE (v2.isNumber ());
311+ ASSERT_TRUE (v2.isBool ());
312+ ASSERT_FALSE (v2.isString ());
313+ }
314+
315+ {
316+ Value v1 (" test" );
317+ Value v2 (v1);
318+ ASSERT_EQ (v1.toString (), v2.toString ());
319+ ASSERT_EQ (v1.type (), v2.type ());
320+ ASSERT_FALSE (v2.isInfinity ());
321+ ASSERT_FALSE (v2.isNegativeInfinity ());
322+ ASSERT_FALSE (v2.isNaN ());
323+ ASSERT_FALSE (v2.isNumber ());
324+ ASSERT_FALSE (v2.isBool ());
325+ ASSERT_TRUE (v2.isString ());
326+ }
327+
328+ {
329+ Value v1 (Value::SpecialValue::NaN);
330+ Value v2 (v1);
331+ ASSERT_EQ (v2.toDouble (), 0 );
332+ ASSERT_EQ (v1.type (), v2.type ());
333+ ASSERT_FALSE (v2.isInfinity ());
334+ ASSERT_FALSE (v2.isNegativeInfinity ());
335+ ASSERT_TRUE (v2.isNaN ());
336+ ASSERT_FALSE (v2.isNumber ());
337+ ASSERT_FALSE (v2.isBool ());
338+ ASSERT_FALSE (v2.isString ());
339+ }
340+
341+ {
342+ Value v1 (Value::SpecialValue::Infinity);
343+ Value v2 (v1);
344+ ASSERT_EQ (v1.type (), v2.type ());
345+ ASSERT_TRUE (v2.isInfinity ());
346+ ASSERT_FALSE (v2.isNegativeInfinity ());
347+ ASSERT_FALSE (v2.isNaN ());
348+ ASSERT_FALSE (v2.isNumber ());
349+ ASSERT_FALSE (v2.isBool ());
350+ ASSERT_FALSE (v2.isString ());
351+ }
352+
353+ {
354+ Value v1 (Value::SpecialValue::NegativeInfinity);
355+ Value v2 (v1);
356+ ASSERT_EQ (v1.type (), v2.type ());
357+ ASSERT_FALSE (v2.isInfinity ());
358+ ASSERT_TRUE (v2.isNegativeInfinity ());
359+ ASSERT_FALSE (v2.isNaN ());
360+ ASSERT_FALSE (v2.isNumber ());
361+ ASSERT_FALSE (v2.isBool ());
362+ ASSERT_FALSE (v2.isString ());
363+ }
286364}
287365
288366TEST (ValueTest, FloatAssignment)
@@ -521,17 +599,101 @@ TEST(ValueTest, NaNAssignment)
521599
522600TEST (ValueTest, CopyAssignment)
523601{
524- Value v1 (50 );
525- Value v2;
526- v2 = v1;
527- ASSERT_EQ (v2.toInt (), 50 );
528- ASSERT_EQ (v1.type (), v2.type ());
529- ASSERT_FALSE (v2.isInfinity ());
530- ASSERT_FALSE (v2.isNegativeInfinity ());
531- ASSERT_FALSE (v2.isNaN ());
532- ASSERT_TRUE (v2.isNumber ());
533- ASSERT_FALSE (v2.isBool ());
534- ASSERT_FALSE (v2.isString ());
602+ {
603+ Value v1 (50 );
604+ Value v2;
605+ v2 = v1;
606+ ASSERT_EQ (v2.toInt (), v1.toInt ());
607+ ASSERT_EQ (v1.type (), v2.type ());
608+ ASSERT_FALSE (v2.isInfinity ());
609+ ASSERT_FALSE (v2.isNegativeInfinity ());
610+ ASSERT_FALSE (v2.isNaN ());
611+ ASSERT_TRUE (v2.isNumber ());
612+ ASSERT_FALSE (v2.isBool ());
613+ ASSERT_FALSE (v2.isString ());
614+ }
615+
616+ {
617+ Value v1 (5.5 );
618+ Value v2;
619+ v2 = v1;
620+ ASSERT_EQ (v1.toDouble (), v2.toDouble ());
621+ ASSERT_EQ (v1.type (), v2.type ());
622+ ASSERT_FALSE (v2.isInfinity ());
623+ ASSERT_FALSE (v2.isNegativeInfinity ());
624+ ASSERT_FALSE (v2.isNaN ());
625+ ASSERT_TRUE (v2.isNumber ());
626+ ASSERT_FALSE (v2.isBool ());
627+ ASSERT_FALSE (v2.isString ());
628+ }
629+
630+ {
631+ Value v1 (true );
632+ Value v2;
633+ v2 = v1;
634+ ASSERT_EQ (v1.toBool (), v2.toBool ());
635+ ASSERT_EQ (v1.type (), v2.type ());
636+ ASSERT_FALSE (v2.isInfinity ());
637+ ASSERT_FALSE (v2.isNegativeInfinity ());
638+ ASSERT_FALSE (v2.isNaN ());
639+ ASSERT_FALSE (v2.isNumber ());
640+ ASSERT_TRUE (v2.isBool ());
641+ ASSERT_FALSE (v2.isString ());
642+ }
643+
644+ {
645+ Value v1 (" test" );
646+ Value v2;
647+ v2 = v1;
648+ ASSERT_EQ (v1.toString (), v2.toString ());
649+ ASSERT_EQ (v1.type (), v2.type ());
650+ ASSERT_FALSE (v2.isInfinity ());
651+ ASSERT_FALSE (v2.isNegativeInfinity ());
652+ ASSERT_FALSE (v2.isNaN ());
653+ ASSERT_FALSE (v2.isNumber ());
654+ ASSERT_FALSE (v2.isBool ());
655+ ASSERT_TRUE (v2.isString ());
656+ }
657+
658+ {
659+ Value v1 (Value::SpecialValue::NaN);
660+ Value v2;
661+ v2 = v1;
662+ ASSERT_EQ (v2.toDouble (), 0 );
663+ ASSERT_EQ (v1.type (), v2.type ());
664+ ASSERT_FALSE (v2.isInfinity ());
665+ ASSERT_FALSE (v2.isNegativeInfinity ());
666+ ASSERT_TRUE (v2.isNaN ());
667+ ASSERT_FALSE (v2.isNumber ());
668+ ASSERT_FALSE (v2.isBool ());
669+ ASSERT_FALSE (v2.isString ());
670+ }
671+
672+ {
673+ Value v1 (Value::SpecialValue::Infinity);
674+ Value v2;
675+ v2 = v1;
676+ ASSERT_EQ (v1.type (), v2.type ());
677+ ASSERT_TRUE (v2.isInfinity ());
678+ ASSERT_FALSE (v2.isNegativeInfinity ());
679+ ASSERT_FALSE (v2.isNaN ());
680+ ASSERT_FALSE (v2.isNumber ());
681+ ASSERT_FALSE (v2.isBool ());
682+ ASSERT_FALSE (v2.isString ());
683+ }
684+
685+ {
686+ Value v1 (Value::SpecialValue::NegativeInfinity);
687+ Value v2;
688+ v2 = v1;
689+ ASSERT_EQ (v1.type (), v2.type ());
690+ ASSERT_FALSE (v2.isInfinity ());
691+ ASSERT_TRUE (v2.isNegativeInfinity ());
692+ ASSERT_FALSE (v2.isNaN ());
693+ ASSERT_FALSE (v2.isNumber ());
694+ ASSERT_FALSE (v2.isBool ());
695+ ASSERT_FALSE (v2.isString ());
696+ }
535697}
536698
537699TEST (ValueTest, ToInt)
0 commit comments