@@ -760,6 +760,49 @@ TEST(ValueTest, ToInt)
760760
761761 v = " something" ;
762762 ASSERT_EQ (v.toInt (), 0 );
763+
764+ // Hex
765+ v = " 0xafe" ;
766+ ASSERT_TRUE (v.isString ());
767+ ASSERT_EQ (v.toInt (), 2814 );
768+
769+ v = " 0xBaCD" ;
770+ ASSERT_TRUE (v.isString ());
771+ ASSERT_EQ (v.toInt (), 47821 );
772+
773+ v = " 0XBaCD" ;
774+ ASSERT_TRUE (v.isString ());
775+ ASSERT_EQ (v.toInt (), 47821 );
776+
777+ v = " 0xAbG" ;
778+ ASSERT_TRUE (v.isString ());
779+ ASSERT_EQ (v.toInt (), 0 );
780+
781+ // Octal
782+ v = " 0o506" ;
783+ ASSERT_TRUE (v.isString ());
784+ ASSERT_EQ (v.toInt (), 326 );
785+
786+ v = " 0O17206" ;
787+ ASSERT_TRUE (v.isString ());
788+ ASSERT_EQ (v.toInt (), 7814 );
789+
790+ v = " 0o5783" ;
791+ ASSERT_TRUE (v.isString ());
792+ ASSERT_EQ (v.toInt (), 0 );
793+
794+ // Binary
795+ v = " 0b101101" ;
796+ ASSERT_TRUE (v.isString ());
797+ ASSERT_EQ (v.toInt (), 45 );
798+
799+ v = " 0B1110100110" ;
800+ ASSERT_TRUE (v.isString ());
801+ ASSERT_EQ (v.toInt (), 934 );
802+
803+ v = " 0b100112001" ;
804+ ASSERT_TRUE (v.isString ());
805+ ASSERT_EQ (v.toInt (), 0 );
763806}
764807
765808TEST (ValueTest, ToLong)
@@ -808,6 +851,49 @@ TEST(ValueTest, ToLong)
808851
809852 v = " something" ;
810853 ASSERT_EQ (v.toLong (), 0 );
854+
855+ // Hex
856+ v = " 0xafe" ;
857+ ASSERT_TRUE (v.isString ());
858+ ASSERT_EQ (v.toLong (), 2814 );
859+
860+ v = " 0xBaCD" ;
861+ ASSERT_TRUE (v.isString ());
862+ ASSERT_EQ (v.toLong (), 47821 );
863+
864+ v = " 0XBaCD" ;
865+ ASSERT_TRUE (v.isString ());
866+ ASSERT_EQ (v.toLong (), 47821 );
867+
868+ v = " 0xAbG" ;
869+ ASSERT_TRUE (v.isString ());
870+ ASSERT_EQ (v.toLong (), 0 );
871+
872+ // Octal
873+ v = " 0o506" ;
874+ ASSERT_TRUE (v.isString ());
875+ ASSERT_EQ (v.toLong (), 326 );
876+
877+ v = " 0O17206" ;
878+ ASSERT_TRUE (v.isString ());
879+ ASSERT_EQ (v.toLong (), 7814 );
880+
881+ v = " 0o5783" ;
882+ ASSERT_TRUE (v.isString ());
883+ ASSERT_EQ (v.toLong (), 0 );
884+
885+ // Binary
886+ v = " 0b101101" ;
887+ ASSERT_TRUE (v.isString ());
888+ ASSERT_EQ (v.toLong (), 45 );
889+
890+ v = " 0B1110100110" ;
891+ ASSERT_TRUE (v.isString ());
892+ ASSERT_EQ (v.toLong (), 934 );
893+
894+ v = " 0b100112001" ;
895+ ASSERT_TRUE (v.isString ());
896+ ASSERT_EQ (v.toLong (), 0 );
811897}
812898
813899TEST (ValueTest, ToDouble)
@@ -866,6 +952,49 @@ TEST(ValueTest, ToDouble)
866952
867953 v = " something" ;
868954 ASSERT_EQ (v.toDouble (), 0.0 );
955+
956+ // Hex
957+ v = " 0xafe" ;
958+ ASSERT_TRUE (v.isString ());
959+ ASSERT_EQ (v.toDouble (), 2814 );
960+
961+ v = " 0xBaCD" ;
962+ ASSERT_TRUE (v.isString ());
963+ ASSERT_EQ (v.toDouble (), 47821 );
964+
965+ v = " 0XBaCD" ;
966+ ASSERT_TRUE (v.isString ());
967+ ASSERT_EQ (v.toDouble (), 47821 );
968+
969+ v = " 0xAbG" ;
970+ ASSERT_TRUE (v.isString ());
971+ ASSERT_EQ (v.toDouble (), 0 );
972+
973+ // Octal
974+ v = " 0o506" ;
975+ ASSERT_TRUE (v.isString ());
976+ ASSERT_EQ (v.toDouble (), 326 );
977+
978+ v = " 0O17206" ;
979+ ASSERT_TRUE (v.isString ());
980+ ASSERT_EQ (v.toDouble (), 7814 );
981+
982+ v = " 0o5783" ;
983+ ASSERT_TRUE (v.isString ());
984+ ASSERT_EQ (v.toDouble (), 0 );
985+
986+ // Binary
987+ v = " 0b101101" ;
988+ ASSERT_TRUE (v.isString ());
989+ ASSERT_EQ (v.toDouble (), 45 );
990+
991+ v = " 0B1110100110" ;
992+ ASSERT_TRUE (v.isString ());
993+ ASSERT_EQ (v.toDouble (), 934 );
994+
995+ v = " 0b100112001" ;
996+ ASSERT_TRUE (v.isString ());
997+ ASSERT_EQ (v.toDouble (), 0 );
869998}
870999
8711000TEST (ValueTest, ToBool)
@@ -921,6 +1050,54 @@ TEST(ValueTest, ToBool)
9211050
9221051 v = " something" ;
9231052 ASSERT_EQ (v.toBool (), false );
1053+
1054+ // TODO: Uncomment this (#517)
1055+ // Hex
1056+ /* v = "0xafe";
1057+ ASSERT_TRUE(v.isString());
1058+ ASSERT_TRUE(v.toBool());
1059+
1060+ v = "0xBaCD";
1061+ ASSERT_TRUE(v.isString());
1062+ ASSERT_TRUE(v.toBool());
1063+
1064+ v = "0x0";
1065+ ASSERT_TRUE(v.isString());
1066+ ASSERT_FALSE(v.toBool());
1067+
1068+ v = "0XBaCD";
1069+ ASSERT_TRUE(v.isString());
1070+ ASSERT_TRUE(v.toBool());
1071+
1072+ v = "0xAbG";
1073+ ASSERT_TRUE(v.isString());
1074+ ASSERT_FALSE(v.toBool());
1075+
1076+ // Octal
1077+ v = "0o506";
1078+ ASSERT_TRUE(v.isString());
1079+ ASSERT_TRUE(v.toBool());
1080+
1081+ v = "0O17206";
1082+ ASSERT_TRUE(v.isString());
1083+ ASSERT_TRUE(v.toBool());
1084+
1085+ v = "0o5783";
1086+ ASSERT_TRUE(v.isString());
1087+ ASSERT_FALSE(v.toBool());
1088+
1089+ // Binary
1090+ v = "0b101101";
1091+ ASSERT_TRUE(v.isString());
1092+ ASSERT_TRUE(v.toBool());
1093+
1094+ v = "0B1110100110";
1095+ ASSERT_TRUE(v.isString());
1096+ ASSERT_TRUE(v.toBool());
1097+
1098+ v = "0b100112001";
1099+ ASSERT_TRUE(v.isString());
1100+ ASSERT_FALSE(v.toBool());*/
9241101}
9251102
9261103TEST (ValueTest, ToString)
0 commit comments