@@ -1792,6 +1792,142 @@ func TestEmpty(t *testing.T) {
1792
1792
False (t , Empty (mockT , TString ("abc" )), "non-empty aliased string is empty" )
1793
1793
False (t , Empty (mockT , xP ), "ptr to non-nil value is not empty" )
1794
1794
False (t , Empty (mockT , [1 ]int {42 }), "array is not state" )
1795
+
1796
+ // error messages validation
1797
+ tests := []struct {
1798
+ name string
1799
+ value interface {}
1800
+ expectedResult bool
1801
+ expectedErrMsg string
1802
+ }{
1803
+ {
1804
+ name : "Non Empty string is not empty" ,
1805
+ value : "something" ,
1806
+ expectedResult : false ,
1807
+ expectedErrMsg : "Should be empty, but was something\n " ,
1808
+ },
1809
+ {
1810
+ name : "Non nil object is not empty" ,
1811
+ value : errors .New ("something" ),
1812
+ expectedResult : false ,
1813
+ expectedErrMsg : "Should be empty, but was something\n " ,
1814
+ },
1815
+ {
1816
+ name : "Non empty string array is not empty" ,
1817
+ value : []string {"something" },
1818
+ expectedResult : false ,
1819
+ expectedErrMsg : "Should be empty, but was [something]\n " ,
1820
+ },
1821
+ {
1822
+ name : "Non-zero int value is not empty" ,
1823
+ value : 1 ,
1824
+ expectedResult : false ,
1825
+ expectedErrMsg : "Should be empty, but was 1\n " ,
1826
+ },
1827
+ {
1828
+ name : "True value is not empty" ,
1829
+ value : true ,
1830
+ expectedResult : false ,
1831
+ expectedErrMsg : "Should be empty, but was true\n " ,
1832
+ },
1833
+ {
1834
+ name : "Channel with values is not empty" ,
1835
+ value : chWithValue ,
1836
+ expectedResult : false ,
1837
+ expectedErrMsg : fmt .Sprintf ("Should be empty, but was %v\n " , chWithValue ),
1838
+ },
1839
+ {
1840
+ name : "struct with initialized values is empty" ,
1841
+ value : TStruct {x : 1 },
1842
+ expectedResult : false ,
1843
+ expectedErrMsg : "Should be empty, but was {1}\n " ,
1844
+ },
1845
+ {
1846
+ name : "non-empty aliased string is empty" ,
1847
+ value : TString ("abc" ),
1848
+ expectedResult : false ,
1849
+ expectedErrMsg : "Should be empty, but was abc\n " ,
1850
+ },
1851
+ {
1852
+ name : "ptr to non-nil value is not empty" ,
1853
+ value : xP ,
1854
+ expectedResult : false ,
1855
+ expectedErrMsg : fmt .Sprintf ("Should be empty, but was %p\n " , xP ),
1856
+ },
1857
+ {
1858
+ name : "array is not state" ,
1859
+ value : [1 ]int {42 },
1860
+ expectedResult : false ,
1861
+ expectedErrMsg : "Should be empty, but was [42]\n " ,
1862
+ },
1863
+
1864
+ // Here are some edge cases
1865
+ {
1866
+ name : "string with only spaces is not empty" ,
1867
+ value : " " ,
1868
+ expectedResult : false ,
1869
+ expectedErrMsg : "Should be empty, but was \n " , // TODO FIX THIS strange error message
1870
+ },
1871
+ {
1872
+ name : "string with a line feed is not empty" ,
1873
+ value : "\n " ,
1874
+ expectedResult : false ,
1875
+ // TODO This is the exact same error message as for an empty string
1876
+ expectedErrMsg : "Should be empty, but was \n " , // TODO FIX THIS strange error message
1877
+ },
1878
+ {
1879
+ name : "string with only tabulation and lines feed is not empty" ,
1880
+ value : "\n \t \n " ,
1881
+ expectedResult : false ,
1882
+ // TODO The line feeds and tab are not helping to spot what is expected
1883
+ expectedErrMsg : "" + // this syntax is used to show how errors are reported.
1884
+ "Should be empty, but was \n " +
1885
+ "\t \n " ,
1886
+ },
1887
+ {
1888
+ name : "string with trailing lines feed is not empty" ,
1889
+ value : "foo\n \n " ,
1890
+ expectedResult : false ,
1891
+ // TODO it's not clear if one or two lines feed are expected
1892
+ expectedErrMsg : "Should be empty, but was foo\n \n " ,
1893
+ },
1894
+ {
1895
+ name : "string with leading and trailing tabulation and lines feed is not empty" ,
1896
+ value : "\n \n foo\t \n \t \n " ,
1897
+ expectedResult : false ,
1898
+ // TODO The line feeds and tab are not helping to figure what is expected
1899
+ expectedErrMsg : "" +
1900
+ "Should be empty, but was \n " +
1901
+ "\n " +
1902
+ "foo\t \n " +
1903
+ "\t \n " ,
1904
+ },
1905
+
1906
+ {
1907
+ name : "non-printable character is not empty" ,
1908
+ value : "\u00a0 " , // NO-BREAK SPACE UNICODE CHARACTER
1909
+ expectedResult : false ,
1910
+ // TODO here you cannot figure out what is expected
1911
+ expectedErrMsg : "Should be empty, but was \u00a0 \n " ,
1912
+ },
1913
+
1914
+ // Here we are testing there is no error message on success
1915
+ {
1916
+ name : "Empty string is empty" ,
1917
+ value : "" ,
1918
+ expectedResult : true ,
1919
+ expectedErrMsg : "" ,
1920
+ },
1921
+ }
1922
+
1923
+ for _ , tt := range tests {
1924
+ tt := tt
1925
+ t .Run (tt .name , func (t * testing.T ) {
1926
+ mockCT := new (captureTestingT )
1927
+ res := Empty (mockCT , tt .value )
1928
+ mockCT .checkResultAndErrMsg (t , res , tt .expectedResult , tt .expectedErrMsg )
1929
+ })
1930
+ }
1795
1931
}
1796
1932
1797
1933
func TestNotEmpty (t * testing.T ) {
@@ -1816,6 +1952,68 @@ func TestNotEmpty(t *testing.T) {
1816
1952
True (t , NotEmpty (mockT , true ), "True value is not empty" )
1817
1953
True (t , NotEmpty (mockT , chWithValue ), "Channel with values is not empty" )
1818
1954
True (t , NotEmpty (mockT , [1 ]int {42 }), "array is not state" )
1955
+
1956
+ // error messages validation
1957
+ tests := []struct {
1958
+ name string
1959
+ value interface {}
1960
+ expectedResult bool
1961
+ expectedErrMsg string
1962
+ }{
1963
+ {
1964
+ name : "Empty string is empty" ,
1965
+ value : "" ,
1966
+ expectedResult : false ,
1967
+ expectedErrMsg : `Should NOT be empty, but was ` + "\n " , // TODO FIX THIS strange error message
1968
+ },
1969
+ {
1970
+ name : "Nil is empty" ,
1971
+ value : nil ,
1972
+ expectedResult : false ,
1973
+ expectedErrMsg : "Should NOT be empty, but was <nil>\n " ,
1974
+ },
1975
+ {
1976
+ name : "Empty string array is empty" ,
1977
+ value : []string {},
1978
+ expectedResult : false ,
1979
+ expectedErrMsg : "Should NOT be empty, but was []\n " ,
1980
+ },
1981
+ {
1982
+ name : "Zero int value is empty" ,
1983
+ value : 0 ,
1984
+ expectedResult : false ,
1985
+ expectedErrMsg : "Should NOT be empty, but was 0\n " ,
1986
+ },
1987
+ {
1988
+ name : "False value is empty" ,
1989
+ value : false ,
1990
+ expectedResult : false ,
1991
+ expectedErrMsg : "Should NOT be empty, but was false\n " ,
1992
+ },
1993
+ {
1994
+ name : "array is state" ,
1995
+ value : [1 ]int {},
1996
+ expectedResult : false ,
1997
+ expectedErrMsg : "Should NOT be empty, but was [0]\n " ,
1998
+ },
1999
+
2000
+ // Here we are testing there is no error message on success
2001
+ {
2002
+ name : "Non Empty string is not empty" ,
2003
+ value : "something" ,
2004
+ expectedResult : true ,
2005
+ expectedErrMsg : "" ,
2006
+ },
2007
+ }
2008
+
2009
+ for _ , tt := range tests {
2010
+ tt := tt
2011
+ t .Run (tt .name , func (t * testing.T ) {
2012
+ mockCT := new (captureTestingT )
2013
+ res := NotEmpty (mockCT , tt .value )
2014
+ mockCT .checkResultAndErrMsg (t , tt .expectedResult , res , tt .expectedErrMsg )
2015
+ })
2016
+ }
1819
2017
}
1820
2018
1821
2019
func Test_getLen (t * testing.T ) {
0 commit comments