Test the detailed formatting of failed string comparisons

Contents:


variable defined: TestPageName=Testpage
variable defined: minus=-
variable defined: exclamation=!


script
given test page Testpage
and Test System setup is !define TEST_SYSTEM {slim} !path lib/*.jar
and Test content is !-

variable defined: TEST_SYSTEM=slim

import
fitnesse.slim.test


Test Strings by plain compare, neither custom compare nor regular expression.
In this case detailed diff is wanted.

Detailed Diff
actual string expected string? #comment
abc abc equal
abc xyz completly different
abc xbc first char different
abc ayc middle char different
abc abz last char different
xyz actual empty, expected filled
abc actual filled, expected empty; will be counted as ignored
<&> <&> equal with HTML special chars
<&> xyz completly different with HTML special chars
<&> x&> first char different with HTML special chars
<&> <y> middle char different with HTML special chars
<&> <&z last char differentwith HTML special chars
<&> actual empty, expected filled with HTML special chars
abc <&> completly different with HTML special chars
abc <bc first char different with HTML special chars
abc a&c middle char different with HTML special chars
abc ab> last char different with HTML special chars
Hello World Wellcome Lord no obvious match

Test Strings by regular expression.
In this case no detailed diff is wanted.

Detailed Diff
actual string expected string? #comment
abc =~/abc/ match
abc =~/a.c/ match
abc =~/\w+/ match
abc =~/\w{3}/ match
abc =~/^\w{3}$/ match
abc =~/\w{1}/ match
abc =~/^\w{1}$/ no match
abc =~/[ABC]+/ no match
abc =~/[ABC]+/i wrong syntax, disable value comparison, use string comparison


Test integers by string comparison.
In this case detailed diff ist wanted.

Detailed Diff
actual int expected int? #comment
1 1 equal
1 2 completly different
1 10 partially different
1 completly different

Test integers by value comparison, see <FitNesse.UserGuide.WritingAcceptanceTests.SliM.ValueComparisons
In this case no detailed diff is wanted.

Detailed Diff
actual int expected int? #comment
1 >=1 ok
1 <2 ok
1 >1 nok
1 =1 ok
1 <1 nok
1 0<_<2 ok
1 2<_<0 nok, logically wrong
1 0>_>2 wrong syntax, disable value comparison, use string comparison
1 2>_>0 wrong syntax, disable value comparison, use string comparison


Test doubles by string comparison.
In this case detailed diff is wanted.

Detailed Diff
actual double expected double? #comment
1.0 1.0 equal
1.1 222 completly different
1.0 10 partially different
1.0 partially different

Test doubles by value comparison, see <FitNesse.UserGuide.WritingAcceptanceTests.SliM.ValueComparisons
In this case no detailed diff is wanted.

Detailed Diff
actual double expected double? #comment
1 >=1 ok
1 <2 ok
1 >1 nok
1 =1 ok
1 <1 nok
1 0<_<2 ok
1 2<_<0 nok, logically wrong
1 0>_>2 wrong syntax, disable value comparison, use string comparison
1 2>_>0 wrong syntax, disable value comparison, use string comparison
1.0 ~=1 ok
1.1 ~=1 ok
0.9 ~=1 ok
1.0 ~=1.0 ok
1.1 ~=1.0 nok
0.9 ~=1.0 nok


Test symbols by string comparison.

Detailed Diff
actual symbol expected symbol? #comment
def $symbol=
$symbol def
$symbol xyz
$symbol xef
$symbol dyf
$symbol dez
def $symbol
xyz $symbol
xef $symbol
dyf $symbol
dez $symbol
$symbol


Test custom comparator, see <FitNesse.UserGuide.AdministeringFitNesse.ConfigurationFile
The inverse comparator fitnesse.slim.test.InverseComparator negates the method String.equals(String).

script Detailed Diff
note everything not equals to 'abc' is ok
check echo abc inverse:xyz
note everything not equals to 'abc' is ok
check echo abc inverse:ABC
note everthing not equals to 'abc' is ok
check echo abc inverse:cba
note only 'abc' is nok
check echo abc inverse:abc


Test Scenario and Script

Scenario Detailed Diff Scenario Test
start Detailed Diff
check echo hello hello
check echo hello hallo

Script
Detailed Diff Scenario Test

-!
when page Testpage is tested and HTML is extracted
#when page Testpage is tested
then 25 assertions pass, 50 fail, 1 are ignored 0 exceptions thrown
note

Tests of strings

ensure content contains abc
ensure content contains [abc] expected [xyz]
ensure content contains [abc] expected [xbc]
ensure content contains [abc] expected [ayc]
ensure content contains [abc] expected [abz]
ensure content contains [] expected [xyz]
ensure content contains [Hello World] expected [Wellcome Lord]
note

Tests of smbols

ensure content contains def
ensure content contains [def] expected [xyz]
ensure content contains [def] expected [xef]
ensure content contains [def] expected [dyf]
ensure content contains [def] expected [dez]
ensure content contains <span class="pass">$symbol->[def]</span>
ensure content contains [xyz] expected [$symbol->[def]]
ensure content contains [xef] expected [$symbol->[def]]
ensure content contains [dyf] expected [$symbol->[def]]
ensure content contains [dez] expected [$symbol->[def]]
ensure content contains [] expected [$symbol->[def]]
note

Tests of scenario

ensure content contains hello
ensure content contains [hello] expected [hallo]
note

Display Test Results

show Symbol $HTML_Result