Skip to content

Commit 55fd54f

Browse files
committed
Add proper tests for copy constructor/assignment of Value
1 parent 1ac93b8 commit 55fd54f

File tree

1 file changed

+183
-21
lines changed

1 file changed

+183
-21
lines changed

test/scratch_classes/value_test.cpp

Lines changed: 183 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -273,16 +273,94 @@ TEST(ValueTest, NaNConstructor)
273273

274274
TEST(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

288366
TEST(ValueTest, FloatAssignment)
@@ -521,17 +599,101 @@ TEST(ValueTest, NaNAssignment)
521599

522600
TEST(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

537699
TEST(ValueTest, ToInt)

0 commit comments

Comments
 (0)