@@ -1792,6 +1792,142 @@ func TestEmpty(t *testing.T) {
17921792 False (t , Empty (mockT , TString ("abc" )), "non-empty aliased string is empty" )
17931793 False (t , Empty (mockT , xP ), "ptr to non-nil value is not empty" )
17941794 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+ }
17951931}
17961932
17971933func TestNotEmpty (t * testing.T ) {
@@ -1816,6 +1952,68 @@ func TestNotEmpty(t *testing.T) {
18161952 True (t , NotEmpty (mockT , true ), "True value is not empty" )
18171953 True (t , NotEmpty (mockT , chWithValue ), "Channel with values is not empty" )
18181954 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+ }
18192017}
18202018
18212019func Test_getLen (t * testing.T ) {
0 commit comments