Skip to content

Commit 5d3bd46

Browse files
committed
Add Value equality operator test
1 parent 07d026d commit 5d3bd46

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
@@ -1629,3 +1629,355 @@ TEST(ValueTest, ModOperator)
16291629
v = -150;
16301630
ASSERT_EQ(v % "-Infinity", -150);
16311631
}
1632+
1633+
TEST(ValueTest, EqualityOperators)
1634+
{
1635+
{
1636+
Value v1 = 10;
1637+
Value v2 = 10;
1638+
Value v3 = 8;
1639+
1640+
ASSERT_TRUE(v1 == v2);
1641+
ASSERT_FALSE(v1 != v2);
1642+
1643+
ASSERT_FALSE(v1 == v3);
1644+
ASSERT_TRUE(v1 != v3);
1645+
1646+
ASSERT_FALSE(v2 == v3);
1647+
ASSERT_TRUE(v2 != v3);
1648+
}
1649+
1650+
{
1651+
Value v1 = -4.25;
1652+
Value v2 = -4.25;
1653+
Value v3 = 5.312;
1654+
1655+
ASSERT_TRUE(v1 == v2);
1656+
ASSERT_FALSE(v1 != v2);
1657+
1658+
ASSERT_FALSE(v1 == v3);
1659+
ASSERT_TRUE(v1 != v3);
1660+
1661+
ASSERT_FALSE(v2 == v3);
1662+
ASSERT_TRUE(v2 != v3);
1663+
}
1664+
1665+
{
1666+
Value v1 = true;
1667+
Value v2 = true;
1668+
Value v3 = false;
1669+
1670+
ASSERT_TRUE(v1 == v2);
1671+
ASSERT_FALSE(v1 != v2);
1672+
1673+
ASSERT_FALSE(v1 == v3);
1674+
ASSERT_TRUE(v1 != v3);
1675+
1676+
ASSERT_FALSE(v2 == v3);
1677+
ASSERT_TRUE(v2 != v3);
1678+
}
1679+
1680+
{
1681+
Value v1 = "abC def";
1682+
Value v2 = "abC def";
1683+
Value v3 = "abc dEf";
1684+
Value v4 = "hello world";
1685+
1686+
ASSERT_TRUE(v1 == v2);
1687+
ASSERT_FALSE(v1 != v2);
1688+
1689+
ASSERT_TRUE(v1 == v3);
1690+
ASSERT_FALSE(v1 != v3);
1691+
1692+
ASSERT_TRUE(v2 == v3);
1693+
ASSERT_FALSE(v2 != v3);
1694+
1695+
ASSERT_FALSE(v1 == v4);
1696+
ASSERT_TRUE(v1 != v4);
1697+
1698+
ASSERT_FALSE(v2 == v4);
1699+
ASSERT_TRUE(v2 != v4);
1700+
1701+
ASSERT_FALSE(v3 == v4);
1702+
ASSERT_TRUE(v3 != v4);
1703+
}
1704+
1705+
{
1706+
Value v1(Value::SpecialValue::Infinity);
1707+
Value v2(Value::SpecialValue::Infinity);
1708+
Value v3(Value::SpecialValue::NegativeInfinity);
1709+
Value v4(Value::SpecialValue::NegativeInfinity);
1710+
Value v5(Value::SpecialValue::NaN);
1711+
Value v6(Value::SpecialValue::NaN);
1712+
1713+
ASSERT_TRUE(v1 == v2);
1714+
ASSERT_FALSE(v1 != v2);
1715+
1716+
ASSERT_TRUE(v3 == v4);
1717+
ASSERT_FALSE(v3 != v4);
1718+
1719+
// TODO: Enable this after #196 is fixed
1720+
/*ASSERT_TRUE(v5 == v6);
1721+
ASSERT_FALSE(v5 != v6);*/
1722+
1723+
ASSERT_FALSE(v1 == v3);
1724+
ASSERT_TRUE(v1 != v3);
1725+
1726+
ASSERT_FALSE(v1 == v5);
1727+
ASSERT_TRUE(v1 != v5);
1728+
1729+
ASSERT_FALSE(v3 == v5);
1730+
ASSERT_TRUE(v3 != v5);
1731+
}
1732+
1733+
{
1734+
Value v1 = 5.00;
1735+
Value v2 = 5;
1736+
Value v3 = 6;
1737+
1738+
ASSERT_TRUE(v1 == v2);
1739+
ASSERT_FALSE(v1 != v2);
1740+
1741+
ASSERT_FALSE(v1 == v3);
1742+
ASSERT_TRUE(v1 != v3);
1743+
1744+
ASSERT_FALSE(v2 == v3);
1745+
ASSERT_TRUE(v2 != v3);
1746+
}
1747+
1748+
{
1749+
Value v1 = 1;
1750+
Value v2 = true;
1751+
Value v3 = false;
1752+
1753+
ASSERT_TRUE(v1 == v2);
1754+
ASSERT_FALSE(v1 != v2);
1755+
1756+
ASSERT_FALSE(v1 == v3);
1757+
ASSERT_TRUE(v1 != v3);
1758+
1759+
ASSERT_FALSE(v2 == v3);
1760+
ASSERT_TRUE(v2 != v3);
1761+
}
1762+
1763+
{
1764+
Value v1 = 5.25;
1765+
Value v2 = "5.25";
1766+
Value v3 = "5.26";
1767+
1768+
ASSERT_TRUE(v1 == v2);
1769+
ASSERT_FALSE(v1 != v2);
1770+
1771+
ASSERT_FALSE(v1 == v3);
1772+
ASSERT_TRUE(v1 != v3);
1773+
1774+
ASSERT_FALSE(v2 == v3);
1775+
ASSERT_TRUE(v2 != v3);
1776+
}
1777+
1778+
{
1779+
Value v1 = 1;
1780+
Value v2 = true;
1781+
Value v3 = false;
1782+
1783+
ASSERT_TRUE(v1 == v2);
1784+
ASSERT_FALSE(v1 != v2);
1785+
1786+
ASSERT_FALSE(v1 == v3);
1787+
ASSERT_TRUE(v1 != v3);
1788+
1789+
ASSERT_FALSE(v2 == v3);
1790+
ASSERT_TRUE(v2 != v3);
1791+
}
1792+
1793+
{
1794+
Value v1 = 5;
1795+
Value v2 = 0;
1796+
Value v3(Value::SpecialValue::Infinity);
1797+
Value v4(Value::SpecialValue::NegativeInfinity);
1798+
Value v5(Value::SpecialValue::NaN);
1799+
1800+
ASSERT_FALSE(v1 == v3);
1801+
ASSERT_TRUE(v1 != v3);
1802+
1803+
ASSERT_FALSE(v1 == v4);
1804+
ASSERT_TRUE(v1 != v4);
1805+
1806+
ASSERT_FALSE(v1 == v5);
1807+
ASSERT_TRUE(v1 != v5);
1808+
1809+
// TODO: Enable this after #198 is fixed
1810+
/*ASSERT_FALSE(v2 == v5);
1811+
ASSERT_TRUE(v2 != v5);*/
1812+
}
1813+
1814+
{
1815+
Value v1 = true;
1816+
Value v2 = false;
1817+
Value v3 = "true";
1818+
Value v4 = "false";
1819+
Value v5 = "TRUE";
1820+
Value v6 = "FALSE";
1821+
1822+
ASSERT_TRUE(v1 == v3);
1823+
ASSERT_FALSE(v1 != v3);
1824+
1825+
ASSERT_TRUE(v2 == v4);
1826+
ASSERT_FALSE(v2 != v4);
1827+
1828+
ASSERT_FALSE(v1 == v2);
1829+
ASSERT_TRUE(v1 != v2);
1830+
1831+
ASSERT_FALSE(v2 == v3);
1832+
ASSERT_TRUE(v2 != v3);
1833+
1834+
ASSERT_TRUE(v1 == v5);
1835+
ASSERT_FALSE(v1 != v5);
1836+
1837+
ASSERT_TRUE(v2 == v6);
1838+
ASSERT_FALSE(v2 != v6);
1839+
}
1840+
1841+
{
1842+
Value v1 = true;
1843+
Value v2 = false;
1844+
Value v3(Value::SpecialValue::Infinity);
1845+
Value v4(Value::SpecialValue::NegativeInfinity);
1846+
Value v5(Value::SpecialValue::NaN);
1847+
1848+
ASSERT_FALSE(v1 == v3);
1849+
ASSERT_TRUE(v1 != v3);
1850+
1851+
ASSERT_FALSE(v1 == v4);
1852+
ASSERT_TRUE(v1 != v4);
1853+
1854+
ASSERT_FALSE(v1 == v5);
1855+
ASSERT_TRUE(v1 != v5);
1856+
1857+
ASSERT_FALSE(v2 == v5);
1858+
ASSERT_TRUE(v2 != v5);
1859+
}
1860+
1861+
{
1862+
Value v1 = "Infinity";
1863+
Value v2 = "infinity";
1864+
Value v3 = "-Infinity";
1865+
Value v4 = "-infinity";
1866+
Value v5 = "NaN";
1867+
Value v6 = "nan";
1868+
Value v7(Value::SpecialValue::Infinity);
1869+
Value v8(Value::SpecialValue::NegativeInfinity);
1870+
Value v9(Value::SpecialValue::NaN);
1871+
1872+
// Infinity
1873+
ASSERT_TRUE(v1 == v7);
1874+
ASSERT_FALSE(v1 != v7);
1875+
1876+
ASSERT_FALSE(v1 == v8);
1877+
ASSERT_TRUE(v1 != v8);
1878+
1879+
ASSERT_FALSE(v1 == v9);
1880+
ASSERT_TRUE(v1 != v9);
1881+
1882+
// infinity
1883+
ASSERT_TRUE(v2 == v7);
1884+
ASSERT_FALSE(v2 != v7);
1885+
1886+
ASSERT_FALSE(v2 == v8);
1887+
ASSERT_TRUE(v2 != v8);
1888+
1889+
ASSERT_FALSE(v2 == v9);
1890+
ASSERT_TRUE(v2 != v9);
1891+
1892+
// -Infinity
1893+
ASSERT_FALSE(v3 == v7);
1894+
ASSERT_TRUE(v3 != v7);
1895+
1896+
ASSERT_TRUE(v3 == v8);
1897+
ASSERT_FALSE(v3 != v8);
1898+
1899+
ASSERT_FALSE(v3 == v9);
1900+
ASSERT_TRUE(v3 != v9);
1901+
1902+
// -infinity
1903+
ASSERT_FALSE(v4 == v7);
1904+
ASSERT_TRUE(v4 != v7);
1905+
1906+
ASSERT_TRUE(v4 == v8);
1907+
ASSERT_FALSE(v4 != v8);
1908+
1909+
ASSERT_FALSE(v4 == v9);
1910+
ASSERT_TRUE(v4 != v9);
1911+
1912+
// NaN
1913+
ASSERT_FALSE(v5 == v7);
1914+
ASSERT_TRUE(v5 != v7);
1915+
1916+
ASSERT_FALSE(v5 == v8);
1917+
ASSERT_TRUE(v5 != v8);
1918+
1919+
// TODO: Enable this after #197 is fixed
1920+
/*ASSERT_TRUE(v5 == v9);
1921+
ASSERT_FALSE(v5 != v9);*/
1922+
1923+
// nan
1924+
ASSERT_FALSE(v6 == v7);
1925+
ASSERT_TRUE(v6 != v7);
1926+
1927+
ASSERT_FALSE(v6 == v8);
1928+
ASSERT_TRUE(v6 != v8);
1929+
1930+
ASSERT_TRUE(v6 == v9);
1931+
ASSERT_FALSE(v6 != v9);
1932+
}
1933+
1934+
{
1935+
Value v1 = "abc";
1936+
Value v2 = " ";
1937+
Value v3 = "";
1938+
Value v4 = "0";
1939+
Value v5(Value::SpecialValue::Infinity);
1940+
Value v6(Value::SpecialValue::NegativeInfinity);
1941+
Value v7(Value::SpecialValue::NaN);
1942+
1943+
// Infinity
1944+
ASSERT_FALSE(v1 == v5);
1945+
ASSERT_TRUE(v1 != v5);
1946+
1947+
ASSERT_FALSE(v2 == v5);
1948+
ASSERT_TRUE(v2 != v5);
1949+
1950+
ASSERT_FALSE(v3 == v5);
1951+
ASSERT_TRUE(v3 != v5);
1952+
1953+
ASSERT_FALSE(v4 == v5);
1954+
ASSERT_TRUE(v4 != v5);
1955+
1956+
// -Infinity
1957+
ASSERT_FALSE(v1 == v6);
1958+
ASSERT_TRUE(v1 != v6);
1959+
1960+
ASSERT_FALSE(v2 == v6);
1961+
ASSERT_TRUE(v2 != v6);
1962+
1963+
ASSERT_FALSE(v3 == v6);
1964+
ASSERT_TRUE(v3 != v6);
1965+
1966+
ASSERT_FALSE(v4 == v6);
1967+
ASSERT_TRUE(v4 != v6);
1968+
1969+
// NaN
1970+
ASSERT_FALSE(v1 == v7);
1971+
ASSERT_TRUE(v1 != v7);
1972+
1973+
ASSERT_FALSE(v2 == v7);
1974+
ASSERT_TRUE(v2 != v7);
1975+
1976+
ASSERT_FALSE(v3 == v7);
1977+
ASSERT_TRUE(v3 != v7);
1978+
1979+
// TODO: Enable this after #198 is fixed
1980+
/*ASSERT_FALSE(v4 == v7);
1981+
ASSERT_TRUE(v4 != v7);*/
1982+
}
1983+
}

0 commit comments

Comments
 (0)