@@ -1704,6 +1704,142 @@ func TestEmpty(t *testing.T) {
1704
1704
False (t , Empty (mockT , TString ("abc" )), "non-empty aliased string is empty" )
1705
1705
False (t , Empty (mockT , xP ), "ptr to non-nil value is not empty" )
1706
1706
False (t , Empty (mockT , [1 ]int {42 }), "array is not state" )
1707
+
1708
+ // error messages validation
1709
+ tests := []struct {
1710
+ name string
1711
+ value interface {}
1712
+ expectedResult bool
1713
+ expectedErrMsg string
1714
+ }{
1715
+ {
1716
+ name : "Non Empty string is not empty" ,
1717
+ value : "something" ,
1718
+ expectedResult : false ,
1719
+ expectedErrMsg : "Should be empty, but was something\n " ,
1720
+ },
1721
+ {
1722
+ name : "Non nil object is not empty" ,
1723
+ value : errors .New ("something" ),
1724
+ expectedResult : false ,
1725
+ expectedErrMsg : "Should be empty, but was something\n " ,
1726
+ },
1727
+ {
1728
+ name : "Non empty string array is not empty" ,
1729
+ value : []string {"something" },
1730
+ expectedResult : false ,
1731
+ expectedErrMsg : "Should be empty, but was [something]\n " ,
1732
+ },
1733
+ {
1734
+ name : "Non-zero int value is not empty" ,
1735
+ value : 1 ,
1736
+ expectedResult : false ,
1737
+ expectedErrMsg : "Should be empty, but was 1\n " ,
1738
+ },
1739
+ {
1740
+ name : "True value is not empty" ,
1741
+ value : true ,
1742
+ expectedResult : false ,
1743
+ expectedErrMsg : "Should be empty, but was true\n " ,
1744
+ },
1745
+ {
1746
+ name : "Channel with values is not empty" ,
1747
+ value : chWithValue ,
1748
+ expectedResult : false ,
1749
+ expectedErrMsg : fmt .Sprintf ("Should be empty, but was %v\n " , chWithValue ),
1750
+ },
1751
+ {
1752
+ name : "struct with initialized values is empty" ,
1753
+ value : TStruct {x : 1 },
1754
+ expectedResult : false ,
1755
+ expectedErrMsg : "Should be empty, but was {1}\n " ,
1756
+ },
1757
+ {
1758
+ name : "non-empty aliased string is empty" ,
1759
+ value : TString ("abc" ),
1760
+ expectedResult : false ,
1761
+ expectedErrMsg : "Should be empty, but was abc\n " ,
1762
+ },
1763
+ {
1764
+ name : "ptr to non-nil value is not empty" ,
1765
+ value : xP ,
1766
+ expectedResult : false ,
1767
+ expectedErrMsg : fmt .Sprintf ("Should be empty, but was %p\n " , xP ),
1768
+ },
1769
+ {
1770
+ name : "array is not state" ,
1771
+ value : [1 ]int {42 },
1772
+ expectedResult : false ,
1773
+ expectedErrMsg : "Should be empty, but was [42]\n " ,
1774
+ },
1775
+
1776
+ // Here are some edge cases
1777
+ {
1778
+ name : "string with only spaces is not empty" ,
1779
+ value : " " ,
1780
+ expectedResult : false ,
1781
+ expectedErrMsg : "Should be empty, but was \n " , // TODO FIX THIS strange error message
1782
+ },
1783
+ {
1784
+ name : "string with a line feed is not empty" ,
1785
+ value : "\n " ,
1786
+ expectedResult : false ,
1787
+ // TODO This is the exact same error message as for an empty string
1788
+ expectedErrMsg : "Should be empty, but was \n " , // TODO FIX THIS strange error message
1789
+ },
1790
+ {
1791
+ name : "string with only tabulation and lines feed is not empty" ,
1792
+ value : "\n \t \n " ,
1793
+ expectedResult : false ,
1794
+ // TODO The line feeds and tab are not helping to spot what is expected
1795
+ expectedErrMsg : "" + // this syntax is used to show how errors are reported.
1796
+ "Should be empty, but was \n " +
1797
+ "\t \n " ,
1798
+ },
1799
+ {
1800
+ name : "string with trailing lines feed is not empty" ,
1801
+ value : "foo\n \n " ,
1802
+ expectedResult : false ,
1803
+ // TODO it's not clear if one or two lines feed are expected
1804
+ expectedErrMsg : "Should be empty, but was foo\n \n " ,
1805
+ },
1806
+ {
1807
+ name : "string with leading and trailing tabulation and lines feed is not empty" ,
1808
+ value : "\n \n foo\t \n \t \n " ,
1809
+ expectedResult : false ,
1810
+ // TODO The line feeds and tab are not helping to figure what is expected
1811
+ expectedErrMsg : "" +
1812
+ "Should be empty, but was \n " +
1813
+ "\n " +
1814
+ "foo\t \n " +
1815
+ "\t \n " ,
1816
+ },
1817
+
1818
+ {
1819
+ name : "non-printable character is not empty" ,
1820
+ value : "\u00a0 " , // NO-BREAK SPACE UNICODE CHARACTER
1821
+ expectedResult : false ,
1822
+ // TODO here you cannot figure out what is expected
1823
+ expectedErrMsg : "Should be empty, but was \u00a0 \n " ,
1824
+ },
1825
+
1826
+ // Here we are testing there is no error message on success
1827
+ {
1828
+ name : "Empty string is empty" ,
1829
+ value : "" ,
1830
+ expectedResult : true ,
1831
+ expectedErrMsg : "" ,
1832
+ },
1833
+ }
1834
+
1835
+ for _ , tt := range tests {
1836
+ tt := tt
1837
+ t .Run (tt .name , func (t * testing.T ) {
1838
+ mockCT := new (captureTestingT )
1839
+ res := Empty (mockCT , tt .value )
1840
+ mockCT .checkResultAndErrMsg (t , res , tt .expectedResult , tt .expectedErrMsg )
1841
+ })
1842
+ }
1707
1843
}
1708
1844
1709
1845
func TestNotEmpty (t * testing.T ) {
@@ -1726,6 +1862,68 @@ func TestNotEmpty(t *testing.T) {
1726
1862
True (t , NotEmpty (mockT , true ), "True value is not empty" )
1727
1863
True (t , NotEmpty (mockT , chWithValue ), "Channel with values is not empty" )
1728
1864
True (t , NotEmpty (mockT , [1 ]int {42 }), "array is not state" )
1865
+
1866
+ // error messages validation
1867
+ tests := []struct {
1868
+ name string
1869
+ value interface {}
1870
+ expectedResult bool
1871
+ expectedErrMsg string
1872
+ }{
1873
+ {
1874
+ name : "Empty string is empty" ,
1875
+ value : "" ,
1876
+ expectedResult : false ,
1877
+ expectedErrMsg : `Should NOT be empty, but was ` + "\n " , // TODO FIX THIS strange error message
1878
+ },
1879
+ {
1880
+ name : "Nil is empty" ,
1881
+ value : nil ,
1882
+ expectedResult : false ,
1883
+ expectedErrMsg : "Should NOT be empty, but was <nil>\n " ,
1884
+ },
1885
+ {
1886
+ name : "Empty string array is empty" ,
1887
+ value : []string {},
1888
+ expectedResult : false ,
1889
+ expectedErrMsg : "Should NOT be empty, but was []\n " ,
1890
+ },
1891
+ {
1892
+ name : "Zero int value is empty" ,
1893
+ value : 0 ,
1894
+ expectedResult : false ,
1895
+ expectedErrMsg : "Should NOT be empty, but was 0\n " ,
1896
+ },
1897
+ {
1898
+ name : "False value is empty" ,
1899
+ value : false ,
1900
+ expectedResult : false ,
1901
+ expectedErrMsg : "Should NOT be empty, but was false\n " ,
1902
+ },
1903
+ {
1904
+ name : "array is state" ,
1905
+ value : [1 ]int {},
1906
+ expectedResult : false ,
1907
+ expectedErrMsg : "Should NOT be empty, but was [0]\n " ,
1908
+ },
1909
+
1910
+ // Here we are testing there is no error message on success
1911
+ {
1912
+ name : "Non Empty string is not empty" ,
1913
+ value : "something" ,
1914
+ expectedResult : true ,
1915
+ expectedErrMsg : "" ,
1916
+ },
1917
+ }
1918
+
1919
+ for _ , tt := range tests {
1920
+ tt := tt
1921
+ t .Run (tt .name , func (t * testing.T ) {
1922
+ mockCT := new (captureTestingT )
1923
+ res := NotEmpty (mockCT , tt .value )
1924
+ mockCT .checkResultAndErrMsg (t , tt .expectedResult , res , tt .expectedErrMsg )
1925
+ })
1926
+ }
1729
1927
}
1730
1928
1731
1929
func Test_getLen (t * testing.T ) {
0 commit comments