Skip to content

Commit 4c03062

Browse files
committed
fix #142: Compare strings before comparing numbers
1 parent 585dd30 commit 4c03062

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

include/scratchcpp/value.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -520,12 +520,12 @@ class LIBSCRATCHCPP_EXPORT Value
520520
}
521521
}
522522
} else {
523-
if (v1.isNumber() || v2.isNumber())
523+
if (v1.isString() || v2.isString())
524+
return stringsEqual(v1.toUtf16(), v2.toUtf16());
525+
else if (v1.isNumber() || v2.isNumber())
524526
return v1.toDouble() == v2.toDouble();
525527
else if (v1.isBool() || v2.isBool())
526528
return ((v1.m_type != Type::NaN && v2.m_type != Type::NaN) && (v1.toBool() == v2.toBool()));
527-
else if (v1.isString() || v2.isString())
528-
return stringsEqual(v1.toUtf16(), v2.toUtf16());
529529
else
530530
return false;
531531
}

test/scratch_classes/value_test.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1775,6 +1775,22 @@ TEST(ValueTest, EqualityOperators)
17751775
ASSERT_TRUE(v2 != v3);
17761776
}
17771777

1778+
{
1779+
Value v1 = 0;
1780+
Value v2 = "0";
1781+
Value v3 = "1";
1782+
Value v4 = "test";
1783+
1784+
ASSERT_TRUE(v1 == v2);
1785+
ASSERT_FALSE(v1 != v2);
1786+
1787+
ASSERT_FALSE(v1 == v3);
1788+
ASSERT_TRUE(v1 != v3);
1789+
1790+
ASSERT_FALSE(v1 == v4);
1791+
ASSERT_TRUE(v1 != v4);
1792+
}
1793+
17781794
{
17791795
Value v1 = 1;
17801796
Value v2 = true;

0 commit comments

Comments
 (0)