Skip to content

Commit e186dfc

Browse files
committed
Add Value equality operator test
1 parent e8c4f45 commit e186dfc

File tree

1 file changed

+352
-0
lines changed

1 file changed

+352
-0
lines changed

test/scratch_classes/value_test.cpp

Lines changed: 352 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1467,3 +1467,355 @@ TEST(ValueTest, ModOperator)
14671467
v = -150;
14681468
ASSERT_EQ(v % "-Infinity", -150);
14691469
}
1470+
1471+
TEST(ValueTest, EqualityOperators)
1472+
{
1473+
{
1474+
Value v1 = 10;
1475+
Value v2 = 10;
1476+
Value v3 = 8;
1477+
1478+
ASSERT_TRUE(v1 == v2);
1479+
ASSERT_FALSE(v1 != v2);
1480+
1481+
ASSERT_FALSE(v1 == v3);
1482+
ASSERT_TRUE(v1 != v3);
1483+
1484+
ASSERT_FALSE(v2 == v3);
1485+
ASSERT_TRUE(v2 != v3);
1486+
}
1487+
1488+
{
1489+
Value v1 = -4.25;
1490+
Value v2 = -4.25;
1491+
Value v3 = 5.312;
1492+
1493+
ASSERT_TRUE(v1 == v2);
1494+
ASSERT_FALSE(v1 != v2);
1495+
1496+
ASSERT_FALSE(v1 == v3);
1497+
ASSERT_TRUE(v1 != v3);
1498+
1499+
ASSERT_FALSE(v2 == v3);
1500+
ASSERT_TRUE(v2 != v3);
1501+
}
1502+
1503+
{
1504+
Value v1 = true;
1505+
Value v2 = true;
1506+
Value v3 = false;
1507+
1508+
ASSERT_TRUE(v1 == v2);
1509+
ASSERT_FALSE(v1 != v2);
1510+
1511+
ASSERT_FALSE(v1 == v3);
1512+
ASSERT_TRUE(v1 != v3);
1513+
1514+
ASSERT_FALSE(v2 == v3);
1515+
ASSERT_TRUE(v2 != v3);
1516+
}
1517+
1518+
{
1519+
Value v1 = "abC def";
1520+
Value v2 = "abC def";
1521+
Value v3 = "abc dEf";
1522+
Value v4 = "hello world";
1523+
1524+
ASSERT_TRUE(v1 == v2);
1525+
ASSERT_FALSE(v1 != v2);
1526+
1527+
ASSERT_TRUE(v1 == v3);
1528+
ASSERT_FALSE(v1 != v3);
1529+
1530+
ASSERT_TRUE(v2 == v3);
1531+
ASSERT_FALSE(v2 != v3);
1532+
1533+
ASSERT_FALSE(v1 == v4);
1534+
ASSERT_TRUE(v1 != v4);
1535+
1536+
ASSERT_FALSE(v2 == v4);
1537+
ASSERT_TRUE(v2 != v4);
1538+
1539+
ASSERT_FALSE(v3 == v4);
1540+
ASSERT_TRUE(v3 != v4);
1541+
}
1542+
1543+
{
1544+
Value v1(Value::SpecialValue::Infinity);
1545+
Value v2(Value::SpecialValue::Infinity);
1546+
Value v3(Value::SpecialValue::NegativeInfinity);
1547+
Value v4(Value::SpecialValue::NegativeInfinity);
1548+
Value v5(Value::SpecialValue::NaN);
1549+
Value v6(Value::SpecialValue::NaN);
1550+
1551+
ASSERT_TRUE(v1 == v2);
1552+
ASSERT_FALSE(v1 != v2);
1553+
1554+
ASSERT_TRUE(v3 == v4);
1555+
ASSERT_FALSE(v3 != v4);
1556+
1557+
// TODO: Enable this after #196 is fixed
1558+
/*ASSERT_TRUE(v5 == v6);
1559+
ASSERT_FALSE(v5 != v6);*/
1560+
1561+
ASSERT_FALSE(v1 == v3);
1562+
ASSERT_TRUE(v1 != v3);
1563+
1564+
ASSERT_FALSE(v1 == v5);
1565+
ASSERT_TRUE(v1 != v5);
1566+
1567+
ASSERT_FALSE(v3 == v5);
1568+
ASSERT_TRUE(v3 != v5);
1569+
}
1570+
1571+
{
1572+
Value v1 = 5.00;
1573+
Value v2 = 5;
1574+
Value v3 = 6;
1575+
1576+
ASSERT_TRUE(v1 == v2);
1577+
ASSERT_FALSE(v1 != v2);
1578+
1579+
ASSERT_FALSE(v1 == v3);
1580+
ASSERT_TRUE(v1 != v3);
1581+
1582+
ASSERT_FALSE(v2 == v3);
1583+
ASSERT_TRUE(v2 != v3);
1584+
}
1585+
1586+
{
1587+
Value v1 = 1;
1588+
Value v2 = true;
1589+
Value v3 = false;
1590+
1591+
ASSERT_TRUE(v1 == v2);
1592+
ASSERT_FALSE(v1 != v2);
1593+
1594+
ASSERT_FALSE(v1 == v3);
1595+
ASSERT_TRUE(v1 != v3);
1596+
1597+
ASSERT_FALSE(v2 == v3);
1598+
ASSERT_TRUE(v2 != v3);
1599+
}
1600+
1601+
{
1602+
Value v1 = 5.25;
1603+
Value v2 = "5.25";
1604+
Value v3 = "5.26";
1605+
1606+
ASSERT_TRUE(v1 == v2);
1607+
ASSERT_FALSE(v1 != v2);
1608+
1609+
ASSERT_FALSE(v1 == v3);
1610+
ASSERT_TRUE(v1 != v3);
1611+
1612+
ASSERT_FALSE(v2 == v3);
1613+
ASSERT_TRUE(v2 != v3);
1614+
}
1615+
1616+
{
1617+
Value v1 = 1;
1618+
Value v2 = true;
1619+
Value v3 = false;
1620+
1621+
ASSERT_TRUE(v1 == v2);
1622+
ASSERT_FALSE(v1 != v2);
1623+
1624+
ASSERT_FALSE(v1 == v3);
1625+
ASSERT_TRUE(v1 != v3);
1626+
1627+
ASSERT_FALSE(v2 == v3);
1628+
ASSERT_TRUE(v2 != v3);
1629+
}
1630+
1631+
{
1632+
Value v1 = 5;
1633+
Value v2 = 0;
1634+
Value v3(Value::SpecialValue::Infinity);
1635+
Value v4(Value::SpecialValue::NegativeInfinity);
1636+
Value v5(Value::SpecialValue::NaN);
1637+
1638+
ASSERT_FALSE(v1 == v3);
1639+
ASSERT_TRUE(v1 != v3);
1640+
1641+
ASSERT_FALSE(v1 == v4);
1642+
ASSERT_TRUE(v1 != v4);
1643+
1644+
ASSERT_FALSE(v1 == v5);
1645+
ASSERT_TRUE(v1 != v5);
1646+
1647+
// TODO: Enable this after #198 is fixed
1648+
/*ASSERT_FALSE(v2 == v5);
1649+
ASSERT_TRUE(v2 != v5);*/
1650+
}
1651+
1652+
{
1653+
Value v1 = true;
1654+
Value v2 = false;
1655+
Value v3 = "true";
1656+
Value v4 = "false";
1657+
Value v5 = "TRUE";
1658+
Value v6 = "FALSE";
1659+
1660+
ASSERT_TRUE(v1 == v3);
1661+
ASSERT_FALSE(v1 != v3);
1662+
1663+
ASSERT_TRUE(v2 == v4);
1664+
ASSERT_FALSE(v2 != v4);
1665+
1666+
ASSERT_FALSE(v1 == v2);
1667+
ASSERT_TRUE(v1 != v2);
1668+
1669+
ASSERT_FALSE(v2 == v3);
1670+
ASSERT_TRUE(v2 != v3);
1671+
1672+
ASSERT_TRUE(v1 == v5);
1673+
ASSERT_FALSE(v1 != v5);
1674+
1675+
ASSERT_TRUE(v2 == v6);
1676+
ASSERT_FALSE(v2 != v6);
1677+
}
1678+
1679+
{
1680+
Value v1 = true;
1681+
Value v2 = false;
1682+
Value v3(Value::SpecialValue::Infinity);
1683+
Value v4(Value::SpecialValue::NegativeInfinity);
1684+
Value v5(Value::SpecialValue::NaN);
1685+
1686+
ASSERT_FALSE(v1 == v3);
1687+
ASSERT_TRUE(v1 != v3);
1688+
1689+
ASSERT_FALSE(v1 == v4);
1690+
ASSERT_TRUE(v1 != v4);
1691+
1692+
ASSERT_FALSE(v1 == v5);
1693+
ASSERT_TRUE(v1 != v5);
1694+
1695+
ASSERT_FALSE(v2 == v5);
1696+
ASSERT_TRUE(v2 != v5);
1697+
}
1698+
1699+
{
1700+
Value v1 = "Infinity";
1701+
Value v2 = "infinity";
1702+
Value v3 = "-Infinity";
1703+
Value v4 = "-infinity";
1704+
Value v5 = "NaN";
1705+
Value v6 = "nan";
1706+
Value v7(Value::SpecialValue::Infinity);
1707+
Value v8(Value::SpecialValue::NegativeInfinity);
1708+
Value v9(Value::SpecialValue::NaN);
1709+
1710+
// Infinity
1711+
ASSERT_TRUE(v1 == v7);
1712+
ASSERT_FALSE(v1 != v7);
1713+
1714+
ASSERT_FALSE(v1 == v8);
1715+
ASSERT_TRUE(v1 != v8);
1716+
1717+
ASSERT_FALSE(v1 == v9);
1718+
ASSERT_TRUE(v1 != v9);
1719+
1720+
// infinity
1721+
ASSERT_TRUE(v2 == v7);
1722+
ASSERT_FALSE(v2 != v7);
1723+
1724+
ASSERT_FALSE(v2 == v8);
1725+
ASSERT_TRUE(v2 != v8);
1726+
1727+
ASSERT_FALSE(v2 == v9);
1728+
ASSERT_TRUE(v2 != v9);
1729+
1730+
// -Infinity
1731+
ASSERT_FALSE(v3 == v7);
1732+
ASSERT_TRUE(v3 != v7);
1733+
1734+
ASSERT_TRUE(v3 == v8);
1735+
ASSERT_FALSE(v3 != v8);
1736+
1737+
ASSERT_FALSE(v3 == v9);
1738+
ASSERT_TRUE(v3 != v9);
1739+
1740+
// -infinity
1741+
ASSERT_FALSE(v4 == v7);
1742+
ASSERT_TRUE(v4 != v7);
1743+
1744+
ASSERT_TRUE(v4 == v8);
1745+
ASSERT_FALSE(v4 != v8);
1746+
1747+
ASSERT_FALSE(v4 == v9);
1748+
ASSERT_TRUE(v4 != v9);
1749+
1750+
// NaN
1751+
ASSERT_FALSE(v5 == v7);
1752+
ASSERT_TRUE(v5 != v7);
1753+
1754+
ASSERT_FALSE(v5 == v8);
1755+
ASSERT_TRUE(v5 != v8);
1756+
1757+
// TODO: Enable this after #197 is fixed
1758+
/*ASSERT_TRUE(v5 == v9);
1759+
ASSERT_FALSE(v5 != v9);*/
1760+
1761+
// nan
1762+
ASSERT_FALSE(v6 == v7);
1763+
ASSERT_TRUE(v6 != v7);
1764+
1765+
ASSERT_FALSE(v6 == v8);
1766+
ASSERT_TRUE(v6 != v8);
1767+
1768+
ASSERT_TRUE(v6 == v9);
1769+
ASSERT_FALSE(v6 != v9);
1770+
}
1771+
1772+
{
1773+
Value v1 = "abc";
1774+
Value v2 = " ";
1775+
Value v3 = "";
1776+
Value v4 = "0";
1777+
Value v5(Value::SpecialValue::Infinity);
1778+
Value v6(Value::SpecialValue::NegativeInfinity);
1779+
Value v7(Value::SpecialValue::NaN);
1780+
1781+
// Infinity
1782+
ASSERT_FALSE(v1 == v5);
1783+
ASSERT_TRUE(v1 != v5);
1784+
1785+
ASSERT_FALSE(v2 == v5);
1786+
ASSERT_TRUE(v2 != v5);
1787+
1788+
ASSERT_FALSE(v3 == v5);
1789+
ASSERT_TRUE(v3 != v5);
1790+
1791+
ASSERT_FALSE(v4 == v5);
1792+
ASSERT_TRUE(v4 != v5);
1793+
1794+
// -Infinity
1795+
ASSERT_FALSE(v1 == v6);
1796+
ASSERT_TRUE(v1 != v6);
1797+
1798+
ASSERT_FALSE(v2 == v6);
1799+
ASSERT_TRUE(v2 != v6);
1800+
1801+
ASSERT_FALSE(v3 == v6);
1802+
ASSERT_TRUE(v3 != v6);
1803+
1804+
ASSERT_FALSE(v4 == v6);
1805+
ASSERT_TRUE(v4 != v6);
1806+
1807+
// NaN
1808+
ASSERT_FALSE(v1 == v7);
1809+
ASSERT_TRUE(v1 != v7);
1810+
1811+
ASSERT_FALSE(v2 == v7);
1812+
ASSERT_TRUE(v2 != v7);
1813+
1814+
ASSERT_FALSE(v3 == v7);
1815+
ASSERT_TRUE(v3 != v7);
1816+
1817+
// TODO: Enable this after #198 is fixed
1818+
/*ASSERT_FALSE(v4 == v7);
1819+
ASSERT_TRUE(v4 != v7);*/
1820+
}
1821+
}

0 commit comments

Comments
 (0)