Update FitNesse version

This commit is contained in:
Mike Cifelli 2018-08-17 19:50:48 -04:00
parent 21df7b309a
commit a2940286d5
54 changed files with 917 additions and 784 deletions

1
.gitignore vendored
View File

@ -3,7 +3,6 @@
.idea/**/workspace.xml .idea/**/workspace.xml
.idea/dictionaries .idea/dictionaries
fitnesse/FitNesseRoot/files fitnesse/FitNesseRoot/files
fitnesse/FitNesseRoot/FitNesse/UserGuide/
fitnesse/fitnesse-results fitnesse/fitnesse-results
target/ target/
*.iml *.iml

View File

@ -3,8 +3,7 @@
<option name="JAR_PATH" value="$PROJECT_DIR$/fitnesse/fitnesse-standalone.jar" /> <option name="JAR_PATH" value="$PROJECT_DIR$/fitnesse/fitnesse-standalone.jar" />
<option name="PROGRAM_PARAMETERS" value="-p 5150 -d fitnesse" /> <option name="PROGRAM_PARAMETERS" value="-p 5150 -d fitnesse" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" /> <option name="ALTERNATIVE_JRE_PATH" value="10" />
<option name="ALTERNATIVE_JRE_PATH" value="1.8" />
<method v="2" /> <method v="2" />
</configuration> </configuration>
</component> </component>

View File

@ -1,43 +1,61 @@
!2 ${FITNESSE_VERSION} !2 ${FITNESSE_VERSION}
* Add ability to specify the locale used to format evaluated expressions ([[#929][https://github.com/unclebob/fitnesse/pull/929]]) * Improve stability for non pipe based SUT connection ([[197][https://github.com/unclebob/fitnesse/pull/997]])
* Fix new style wiki pages for Windows (line ending) ([[1058][https://github.com/unclebob/fitnesse/pull/1058]])
* SLiM now better handles parameter types in fixture constructors ([[1024][https://github.com/unclebob/fitnesse/pull/1024]])
* New wiki element: [[''!-!headings-!''][UserGuide.FitNesseWiki.MarkupLanguageReference.MarkupHeadings]] ([[1025][https://github.com/unclebob/fitnesse/pull/1025]])
* Define table type now work for Script table ([[1029][https://github.com/unclebob/fitnesse/pull/1029]], [[1099][https://github.com/unclebob/fitnesse/pull/1099]])
* JUnit runner supports system property based ''excludeSuiteFilter'' annotation ([[1033][https://github.com/unclebob/fitnesse/pull/1033]])
* A SuiteQuery no longer runs test pages that are excluded ([[1079][https://github.com/unclebob/fitnesse/pull/1079]])
* Root file pages are now included in the default wiki content by default ([[1084][https://github.com/unclebob/fitnesse/pull/1084]])
* Table:Table now resizes when the last line contains more results than expected ([[1055][https://github.com/unclebob/fitnesse/pull/1055]])
* Various documentation updates
* Various small improvements
For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=16&state=closed.
!2 20161130
* Add ability to specify the locale used to format evaluated expressions ([[929][https://github.com/unclebob/fitnesse/pull/929]])
* New Slim table type: [[Baseline decision table][!-SuiteAcceptanceTests.SuiteSlimTests.BaseLineDecisionTable-!]] ([[965][https://github.com/unclebob/fitnesse/pull/965]]) * New Slim table type: [[Baseline decision table][!-SuiteAcceptanceTests.SuiteSlimTests.BaseLineDecisionTable-!]] ([[965][https://github.com/unclebob/fitnesse/pull/965]])
* Add base folder for plugin documentation ([[971][https://github.com/unclebob/fitnesse/pull/971]]) * Add base folder for plugin documentation ([[971][https://github.com/unclebob/fitnesse/pull/971]])
* !-FitNesse-! and Slim can now communicate over stdin/stdout. This removes the hassle with network ports ([[977][https://github.com/unclebob/fitnesse/pull/977]], see UserGuide.WritingAcceptanceTests.SliM.SlimProtocol.PortManagement) * !-FitNesse-! and Slim can now communicate over stdin/stdout. This removes the hassle with network ports ([[977][https://github.com/unclebob/fitnesse/pull/977]], see UserGuide.WritingAcceptanceTests.SliM.SlimProtocol.PortManagement)
* API changes: * API changes:
* FitNesse is more strictly propagating exceptions, instead of only logging them ([[#923][https://github.com/unclebob/fitnesse/pull/923]]) * FitNesse is more strictly propagating exceptions, instead of only logging them ([[923][https://github.com/unclebob/fitnesse/pull/923]])
* Updated ''!-FixtureInteraction-!'' interface ([[#911][https://github.com/unclebob/fitnesse/pull/911]]) * Updated ''!-FixtureInteraction-!'' interface ([[911][https://github.com/unclebob/fitnesse/pull/911]])
* To improve extensibility, scenario resolution has been moved to ``!-SlimtestContext-!'' ([[974][https://github.com/unclebob/fitnesse/pull/974]]) * To improve extensibility, scenario resolution has been moved to ``!-SlimtestContext-!'' ([[974][https://github.com/unclebob/fitnesse/pull/974]])''
* ''!-WikiPage-!'' interface now has a ''remove()'' method. This will replace the ''removeChild()'' method in the near future ([[#930][https://github.com/unclebob/fitnesse/pull/930]]) * ''!-WikiPage-!'' interface now has a ''remove()'' method. This will replace the ''removeChild()'' method in the near future ([[930][https://github.com/unclebob/fitnesse/pull/930]])
* Issues fixed: * Issues fixed:
* Display of Map results from fixtures should allow nested HTML ([[#921][https://github.com/unclebob/fitnesse/pull/921]]) * Display of Map results from fixtures should allow nested HTML ([[921][https://github.com/unclebob/fitnesse/pull/921]])
* Fix assignment of output parameters of scenarios with graceful names in decision tables ([[#928][https://github.com/unclebob/fitnesse/pull/928]]) * Fix assignment of output parameters of scenarios with graceful names in decision tables ([[928][https://github.com/unclebob/fitnesse/pull/928]])
* Fix Where Used page for pages under a Symbolic Link ([[#925][https://github.com/unclebob/fitnesse/issues/925]]) * Fix Where Used page for pages under a Symbolic Link ([[925][https://github.com/unclebob/fitnesse/issues/925]])
* Fixed issues in ''!-CachedInteraction-!'' ([[973][https://github.com/unclebob/fitnesse/pull/973]]) * Fixed issues in ''!-CachedInteraction-!'' ([[973][https://github.com/unclebob/fitnesse/pull/973]])
For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=15&state=closed. For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=15&state=closed.
!2 20160515 !2 20160515
* FitNesse requires Java 7 now ([[#872][https://github.com/unclebob/fitnesse/issues/872]], [[#877][https://github.com/unclebob/fitnesse/issues/877]]) * FitNesse requires Java 7 now ([[872][https://github.com/unclebob/fitnesse/issues/872]], [[877][https://github.com/unclebob/fitnesse/issues/877]])
* New autocomplete feature for the "move page" page ([[#867][https://github.com/unclebob/fitnesse/issues/867]]) * New autocomplete feature for the "move page" page ([[867][https://github.com/unclebob/fitnesse/issues/867]])
* Name the link to execution log simply "Execution Log" ([[#851][https://github.com/unclebob/fitnesse/issues/851]]) * Name the link to execution log simply "Execution Log" ([[851][https://github.com/unclebob/fitnesse/issues/851]])
* Dynamically add fitnesse jartoclasspath ([[#862][https://github.com/unclebob/fitnesse/issues/862]], [[#866][https://github.com/unclebob/fitnesse/issues/866]]) * Dynamically add fitnesse jartoclasspath ([[862][https://github.com/unclebob/fitnesse/issues/862]], [[866][https://github.com/unclebob/fitnesse/issues/866]])
* Searching for tags across Symbolic links ([[#488][https://github.com/unclebob/fitnesse/issues/488]], [[#888][https://github.com/unclebob/fitnesse/issues/888]]) * Searching for tags across Symbolic links ([[488][https://github.com/unclebob/fitnesse/issues/488]], [[888][https://github.com/unclebob/fitnesse/issues/888]])
* Add support for table-in-table editing in rich text editor ([[#669][https://github.com/unclebob/fitnesse/issues/669]], [[#885][https://github.com/unclebob/fitnesse/issues/885]]) * Add support for table-in-table editing in rich text editor ([[669][https://github.com/unclebob/fitnesse/issues/669]], [[885][https://github.com/unclebob/fitnesse/issues/885]])
* ''!-@SystemUnderTest-!'' now accepts method calls from subclasses ([[#907][https://github.com/unclebob/fitnesse/issues/907]]) * ''!-@SystemUnderTest-!'' now accepts method calls from subclasses ([[907][https://github.com/unclebob/fitnesse/issues/907]])
* Disallow uploading to folder ''files/fitnesse'' ([[#889][https://github.com/unclebob/fitnesse/issues/889]]) * Disallow uploading to folder ''files/fitnesse'' ([[889][https://github.com/unclebob/fitnesse/issues/889]])
* Avoid infinite cycles when using symlinks ([[#888][https://github.com/unclebob/fitnesse/issues/888]]) * Avoid infinite cycles when using symlinks ([[888][https://github.com/unclebob/fitnesse/issues/888]])
* (Slim) Deal with escaping content in hash table ([[#886][https://github.com/unclebob/fitnesse/issues/886]]) * (Slim) Deal with escaping content in hash table ([[886][https://github.com/unclebob/fitnesse/issues/886]])
* Properly handle symbol assignment in first column of a query table ([[#914][https://github.com/unclebob/fitnesse/issues/914]]) * Properly handle symbol assignment in first column of a query table ([[914][https://github.com/unclebob/fitnesse/issues/914]])
* Issues fixed: * Issues fixed:
* !-CompareVersions-! responder is not escaping output properly ([[#861][https://github.com/unclebob/fitnesse/issues/861]], [[#869][https://github.com/unclebob/fitnesse/issues/869]]) * !-CompareVersions-! responder is not escaping output properly ([[861][https://github.com/unclebob/fitnesse/issues/861]], [[869][https://github.com/unclebob/fitnesse/issues/869]])
* Improve code by honoring ''InterruptedException'' ([[#874][https://github.com/unclebob/fitnesse/issues/874]]) * Improve code by honoring ''InterruptedException'' ([[874][https://github.com/unclebob/fitnesse/issues/874]])
* FitNesse stops again when calling /?shutdown ([[#875][https://github.com/unclebob/fitnesse/issues/875]]) * FitNesse stops again when calling /?shutdown ([[875][https://github.com/unclebob/fitnesse/issues/875]])
* Fixed: Running suites does not show the tests summaries ([[#876][https://github.com/unclebob/fitnesse/issues/876]]) * Fixed: Running suites does not show the tests summaries ([[876][https://github.com/unclebob/fitnesse/issues/876]])
* Fix escaping of HTML in Slim hash tables ([[#878][https://github.com/unclebob/fitnesse/issues/878]]) * Fix escaping of HTML in Slim hash tables ([[878][https://github.com/unclebob/fitnesse/issues/878]])
* Fix class loading for FitNesse resources ([[#880][https://github.com/unclebob/fitnesse/issues/880]]) * Fix class loading for FitNesse resources ([[880][https://github.com/unclebob/fitnesse/issues/880]])
* Change json content type from ''text/json'' to ''applicatioin/json'' ([[#891][https://github.com/unclebob/fitnesse/issues/891]]) * Change json content type from ''text/json'' to ''applicatioin/json'' ([[891][https://github.com/unclebob/fitnesse/issues/891]])
* JUnit runner now plays nice with Gradle ([[#909][https://github.com/unclebob/fitnesse/issues/909]]) * JUnit runner now plays nice with Gradle ([[909][https://github.com/unclebob/fitnesse/issues/909]])
For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=14&state=closed. For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=14&state=closed.
!2 20151230 !2 20151230

View File

@ -1,12 +1,12 @@
There are cases when you want to copy and append the last row of your column or row fixture certain number of times. There are cases when you want to copy and append the last row of your column or row fixture certain number of times.
For Ex: We make a query to the database and it return certain record 'n' number of times. Instead of writing the same record 'n' number of times in your fitnesse page, you can just specify that you expect the last column 'n' number of times using the !-CopyAndAppendLastRow-! decorator. For Ex: We make a query to the database and it return certain record 'n' number of times. Instead of writing the same record 'n' number of times in your fitnesse page, you can just specify that you expect the last column 'n' number of times using the !-CopyAndAppendLastRow-! decorator.
!|Copy and Append Last Row|100|number of times| !|Copy and Append Last Row|100|number of times|
|Division| |Division|
|numerator|denominator|quotient()| |numerator|denominator|quotient()|
|10|2|5| |10|2|5|
|12.6|3|4.2| |12.6|3|4.2|
|100|4|25| |100|4|25|
In the above example, we want to divide 100 by 4 101 times. In the above example, we want to divide 100 by 4 101 times.

View File

@ -1,13 +1,13 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<properties> <properties>
<Edit/> <Edit/>
<Files/> <Files/>
<LastModified>20061216213113</LastModified> <LastModified>20061216213113</LastModified>
<Properties/> <Properties/>
<RecentChanges/> <RecentChanges/>
<Test/> <Test/>
<WhereUsed/> <WhereUsed/>
<saveId>1166322673244</saveId> <saveId>1166322673244</saveId>
<secure-write/> <secure-write/>
<ticketId>524008525574625139</ticketId> <ticketId>524008525574625139</ticketId>
</properties> </properties>

View File

@ -1,12 +1,12 @@
What if you want to call the fixture 'n' times with the same row except you want to update one or two column's value? What if you want to call the fixture 'n' times with the same row except you want to update one or two column's value?
Ex: If you are using fitnesse fixtures to populate database and you want to insert a record 500 times. It would be easy to write one model record and insert that 500 times. This can be easily done with the !-CopyAndAppendLastRow-! decorator. But the database table might have a primary key. So you might want to update the primary key in each row. Now you might want to pipe !-IncrementColumnsValue-! and !-CopyAndAppendLastRow-! decorators to get the job done. Ex: If you are using fitnesse fixtures to populate database and you want to insert a record 500 times. It would be easy to write one model record and insert that 500 times. This can be easily done with the !-CopyAndAppendLastRow-! decorator. But the database table might have a primary key. So you might want to update the primary key in each row. Now you might want to pipe !-IncrementColumnsValue-! and !-CopyAndAppendLastRow-! decorators to get the job done.
Here is an example where I want to divide 5 by 1, 100 times, but I also want to update the numerator by 5 and denominator by 1. Here is an example where I want to divide 5 by 1, 100 times, but I also want to update the numerator by 5 and denominator by 1.
!|Copy and Append Last Row|100|times| !|Copy and Append Last Row|100|times|
|Increment Columns Value|numerator|of type|int|by|5| |Increment Columns Value|numerator|of type|int|by|5|
|Increment Columns Value|denominator|of type|int|by|1| |Increment Columns Value|denominator|of type|int|by|1|
|Division| |Division|
|numerator|denominator|quotient()| |numerator|denominator|quotient()|
|5|1|5| |5|1|5|

View File

@ -1,13 +1,13 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<properties> <properties>
<Edit/> <Edit/>
<Files/> <Files/>
<LastModified>20061216215829</LastModified> <LastModified>20061216215829</LastModified>
<Properties/> <Properties/>
<RecentChanges/> <RecentChanges/>
<Test/> <Test/>
<WhereUsed/> <WhereUsed/>
<saveId>1166324308994</saveId> <saveId>1166324308994</saveId>
<secure-write/> <secure-write/>
<ticketId>-8528063939302055872</ticketId> <ticketId>-8528063939302055872</ticketId>
</properties> </properties>

View File

@ -1,4 +1,4 @@
!|Import| !|Import|
|fit.decorator| |fit.decorator|
|fit.decorator.performance| |fit.decorator.performance|
|eg| |eg|

View File

@ -1,14 +1,14 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<properties> <properties>
<Edit>true</Edit> <Edit>true</Edit>
<Files>true</Files> <Files>true</Files>
<LastModified>20061216183948</LastModified> <LastModified>20061216183948</LastModified>
<Properties>true</Properties> <Properties>true</Properties>
<RecentChanges>true</RecentChanges> <RecentChanges>true</RecentChanges>
<Refactor>true</Refactor> <Refactor>true</Refactor>
<Search>true</Search> <Search>true</Search>
<Versions>true</Versions> <Versions>true</Versions>
<WhereUsed>true</WhereUsed> <WhereUsed>true</WhereUsed>
<saveId>1166312388007</saveId> <saveId>1166312388007</saveId>
<ticketId>-6757238585913794424</ticketId> <ticketId>-6757238585913794424</ticketId>
</properties> </properties>

View File

@ -1,14 +1,14 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<properties> <properties>
<Edit>true</Edit> <Edit>true</Edit>
<Files>true</Files> <Files>true</Files>
<LastModified>20061216141632</LastModified> <LastModified>20061216141632</LastModified>
<Properties>true</Properties> <Properties>true</Properties>
<RecentChanges>true</RecentChanges> <RecentChanges>true</RecentChanges>
<Refactor>true</Refactor> <Refactor>true</Refactor>
<Search>true</Search> <Search>true</Search>
<Versions>true</Versions> <Versions>true</Versions>
<WhereUsed>true</WhereUsed> <WhereUsed>true</WhereUsed>
<saveId>1166296592283</saveId> <saveId>1166296592283</saveId>
<ticketId>-5128325404176707243</ticketId> <ticketId>-5128325404176707243</ticketId>
</properties> </properties>

View File

@ -2,15 +2,23 @@ Purpose: Checks that the Define Table Type table works
By default table should be parsed as a decision table. By default table should be parsed as a decision table.
|Table Or Decision Fixture | |Table Or Decision Fixture |
|parsing as? | |parsing as? |
|Parsed as Decision fixture | |Parsed as Decision fixture|
However after this table it should be parsed as a Table: table. However after this table it should be parsed as a '''Table: table'''.
|Define Table Type | |Define Table Type |
| Table or Decision Fixture | as Table | |Table or Decision Fixture|as Table|
|Table Or Decision Fixture | |Table Or Decision Fixture |
|parsing as? | Parsed as Table fixture | |parsing as?|Parsed as Table fixture|
The same works for script tables (which parse as decision tables in many respects).
|Define Table Type |
|Table or Decision Fixture|as Script|
|Table Or Decision Fixture |
|check|parsing as|Parsed as Decision fixture|

View File

@ -1,12 +1,12 @@
<?xml version="1.0"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<properties> <properties>
<Edit>true</Edit> <Edit>true</Edit>
<Files>true</Files> <Files>true</Files>
<Properties>true</Properties> <Properties>true</Properties>
<RecentChanges>true</RecentChanges> <RecentChanges>true</RecentChanges>
<Refactor>true</Refactor> <Refactor>true</Refactor>
<Search>true</Search> <Search>true</Search>
<Test/> <Test/>
<Versions>true</Versions> <Versions>true</Versions>
<WhereUsed>true</WhereUsed> <WhereUsed>true</WhereUsed>
</properties> </properties>

View File

@ -67,17 +67,17 @@ Example
!3 Based on your test cases you might expect or need to add a varying number of properties to a collection. !3 Based on your test cases you might expect or need to add a varying number of properties to a collection.
!4 Test Case with 2 properties !4 Test Case with 2 properties
|Properties | |Properties |
|#|property a|property b |size?|key set?|property a?|property b?|to string? |has Value '123456789' ?| |#|property a|property b |size?|property a?|property b?|has Value '123456789' ?|
| |$S1 |123456789 |2 |[b, a] |$S1 |123456789 |{b=123456789, a=abcdefghijklmnopqrstuvwxyz} |true | | |$S1 |123456789 |2 |$S1 |123456789 |true |
| |$S2 |"The fox jumps over the wall."|2 |[b, a] |123456789 |$S3 |{b="The fox jumps over the wall.", a=123456789} |true | | |$S2 |"The fox jumps over the wall."|2 |123456789 |$S3 |true |
| |$S3 |abcdefghijklmnopqrstuvwxyz |2 |[b, a] |$S3 |$S1 |{b=abcdefghijklmnopqrstuvwxyz, a="The fox jumps over the wall."}|false | | |$S3 |abcdefghijklmnopqrstuvwxyz |2 |$S3 |$S1 |false |
!4 Test Case with 3 properties added and 2 expected !4 Test Case with 3 properties added and 2 expected
|Properties | |Properties |
|#|property NEW|property a|property b|size?|key set?|property NEW?|property b?|to string? |has Value '123456789' ?|has Value '!-FitNesse-!'?| |#|property NEW|property a|property b|size?|property NEW?|property b?|has Value '123456789' ?|has Value '!-FitNesse-!'?|
| |Hello |$S1 |$S2 |3 | |Hello |123456789 | |true |false | | |Hello |$S1 |$S2 |3 |Hello |123456789 |true |false |
| |!-FitNesse-!|$S2 |$S3 |3 | | |$S3 | |true |true | | |!-FitNesse-!|$S2 |$S3 |3 | |$S3 |true |true |
| |World |$S3 |$S1 |3 | |World |$S1 |{b=abcdefghijklmnopqrstuvwxyz, a="The fox jumps over the wall.", NEW=World}|false |false | | |World |$S3 |$S1 |3 |World |$S1 |false |false |
!4 Look in the collapsed setup how the mapping between column names and method names is done. !4 Look in the collapsed setup how the mapping between column names and method names is done.

View File

@ -0,0 +1,36 @@
Scenarios can be called from decision tables. They should respect the actor (i.e. fixture instance) and Slim table type (i.e. script table or a subclass) of the last script created.
!2 When we create a script using Slim's standard script table, the decision table should use that subtype also.
|scenario |my division1|numerator||denominator||expected|
|setNumerator |@numerator |
|setDenominator|@denominator |
|check |quotient |@expected |
Get the Division implementation from the eg package, and use a script subclass that uses 'verify' instead of the 'check' keyword.
|script|eg.Division|
|my division1 |
|numerator|denominator|expected|
|10 |2 |5.0 |
!2 When we create a script using a subclass of Slim's standard script table, the decision table should use that subtype also.
|scenario |my division2|numerator||denominator||expected|
|setNumerator |@numerator |
|setDenominator|@denominator |
|verify |quotient |@expected |
Get the Division implementation from the eg package, and use a script subclass that uses 'verify' instead of the 'check' keyword.
|verify script|eg.Division|
|my division2 |
|numerator|denominator|expected|
|10 |2 |5.0 |

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<properties>
<Edit>true</Edit>
<Files>true</Files>
<Properties>true</Properties>
<RecentChanges>true</RecentChanges>
<Refactor>true</Refactor>
<Search>true</Search>
<Test>true</Test>
<Versions>true</Versions>
<WhereUsed>true</WhereUsed>
</properties>

View File

@ -3,7 +3,7 @@
!1 Symbol Handling by Fixtures !1 Symbol Handling by Fixtures
If you need advanced symbol handling in your TableTable fixtures than your fixture code must handle this. If you need advanced symbol handling in your [[!-TableTable-!][.FitNesse.FullReferenceGuide.UserGuide.WritingAcceptanceTests.SliM.TableTable]] fixtures than your fixture code must handle this.
Advanced means that you assign to a symbol a value and need to reference this new value again in the same table. Advanced means that you assign to a symbol a value and need to reference this new value again in the same table.
Think if you really need this as it makes your code more complicated. Think if you really need this as it makes your code more complicated.
@ -11,8 +11,8 @@ Think if you really need this as it makes your code more complicated.
!3 Load the symbol aware fixture !3 Load the symbol aware fixture
|import | |import |
|fitnesse.slim.test.statementexecutorconsumer| |fitnesse.slim.test.statementexecutorconsumer|
!include SymbolAssignmentAndReferenceOfTheSameInOneTable !include SymbolAssignmentAndReferenceOfTheSameInOneTable
@ -24,7 +24,7 @@ Think if you really need this as it makes your code more complicated.
!3 The fixture handles a chain of assignments !3 The fixture handles a chain of assignments
|script | |script |
|$X=|echo|99| |$X=|echo|99|

View File

@ -2,7 +2,6 @@
<properties> <properties>
<Edit>true</Edit> <Edit>true</Edit>
<Files>true</Files> <Files>true</Files>
<LastModifyingUser>six42</LastModifyingUser>
<Properties>true</Properties> <Properties>true</Properties>
<RecentChanges>true</RecentChanges> <RecentChanges>true</RecentChanges>
<Refactor>true</Refactor> <Refactor>true</Refactor>

View File

@ -1,145 +1,145 @@
!define TEST_SYSTEM {slim} !define TEST_SYSTEM {slim}
!| import | !| import |
| fitnesse.slim.test | | fitnesse.slim.test |
Test Strings by plain compare, neither custom compare nor regular expression. Test Strings by plain compare, neither custom compare nor regular expression.
In this case detailed diff is wanted. In this case detailed diff is wanted.
| Detailed Diff | | Detailed Diff |
| actual string | expected string? | #comment | | actual string | expected string? | #comment |
| abc | abc | equal | | abc | abc | equal |
| abc | xyz | completly different | | abc | xyz | completly different |
| abc | xbc | first char different | | abc | xbc | first char different |
| abc | ayc | middle char different | | abc | ayc | middle char different |
| abc | abz | last char different | | abc | abz | last char different |
| | xyz | actual empty, expected filled | | | xyz | actual empty, expected filled |
| abc | | actual filled, expected empty; will be counted as ignored | | abc | | actual filled, expected empty; will be counted as ignored |
| <&> | <&> | equal with HTML special chars | | <&> | <&> | equal with HTML special chars |
| <&> | xyz | completly different with HTML special chars | | <&> | xyz | completly different with HTML special chars |
| <&> | x&> | first char different with HTML special chars | | <&> | x&> | first char different with HTML special chars |
| <&> | <y> | middle char different with HTML special chars | | <&> | <y> | middle char different with HTML special chars |
| <&> | <&z | last char differentwith HTML special chars | | <&> | <&z | last char differentwith HTML special chars |
| | <&> | actual empty, expected filled with HTML special chars | | | <&> | actual empty, expected filled with HTML special chars |
| abc | <&> | completly different with HTML special chars | | abc | <&> | completly different with HTML special chars |
| abc | <bc | first char 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 | a&c | middle char different with HTML special chars |
| abc | ab> | last char different with HTML special chars | | abc | ab> | last char different with HTML special chars |
| Hello World | Wellcome Lord | no obvious match | | Hello World | Wellcome Lord | no obvious match |
Test Strings by regular expression. Test Strings by regular expression.
In this case no detailed diff is wanted. In this case no detailed diff is wanted.
| Detailed Diff | | Detailed Diff |
| actual string | expected string? | #comment | | actual string | expected string? | #comment |
| abc | =~/abc/ | match | | abc | =~/abc/ | match |
| abc | =~/a.c/ | match | | abc | =~/a.c/ | match |
| abc | =~/\w+/ | match | | abc | =~/\w+/ | match |
| abc | =~/\w{3}/ | match | | abc | =~/\w{3}/ | match |
| abc | =~/^\w{3}$/ | match | | abc | =~/^\w{3}$/ | match |
| abc | =~/\w{1}/ | match | | abc | =~/\w{1}/ | match |
| abc | =~/^\w{1}$/ | no match | | abc | =~/^\w{1}$/ | no match |
| abc | =~/[ABC]+/ | no match | | abc | =~/[ABC]+/ | no match |
| abc | =~/[ABC]+/i | wrong syntax, disable value comparison, use string comparison | | abc | =~/[ABC]+/i | wrong syntax, disable value comparison, use string comparison |
Test integers by string comparison. Test integers by string comparison.
In this case detailed diff ist wanted. In this case detailed diff ist wanted.
| Detailed Diff | | Detailed Diff |
| actual int | expected int? | #comment | | actual int | expected int? | #comment |
| 1 | 1 | equal | | 1 | 1 | equal |
| 1 | 2 | completly different | | 1 | 2 | completly different |
| 1 | 10 | partially different | | 1 | 10 | partially different |
| | 1 | completly different | | | 1 | completly different |
Test integers by value comparison, see <FitNesse.UserGuide.WritingAcceptanceTests.SliM.ValueComparisons Test integers by value comparison, see <FitNesse.UserGuide.WritingAcceptanceTests.SliM.ValueComparisons
In this case no detailed diff is wanted. In this case no detailed diff is wanted.
| Detailed Diff | | Detailed Diff |
| actual int | expected int? | #comment | | actual int | expected int? | #comment |
| 1 | >=1 | ok | | 1 | >=1 | ok |
| 1 | <2 | ok | | 1 | <2 | ok |
| 1 | >1 | nok | | 1 | >1 | nok |
| 1 | =1 | ok | | 1 | =1 | ok |
| 1 | <1 | nok | | 1 | <1 | nok |
| 1 | 0<_<2 | ok | | 1 | 0<_<2 | ok |
| 1 | 2<_<0 | nok, logically wrong | | 1 | 2<_<0 | nok, logically wrong |
| 1 | 0>_>2 | wrong syntax, disable value comparison, use string comparison | | 1 | 0>_>2 | wrong syntax, disable value comparison, use string comparison |
| 1 | 2>_>0 | wrong syntax, disable value comparison, use string comparison | | 1 | 2>_>0 | wrong syntax, disable value comparison, use string comparison |
Test doubles by string comparison. Test doubles by string comparison.
In this case detailed diff ist wanted. In this case detailed diff ist wanted.
| Detailed Diff | | Detailed Diff |
| actual double | expected double? | #comment | | actual double | expected double? | #comment |
| 1.0 | 1.0 | equal | | 1.0 | 1.0 | equal |
| 1.1 | 222 | completly different | | 1.1 | 222 | completly different |
| 1.0 | 10 | partially different | | 1.0 | 10 | partially different |
| | 1.0 | partially different | | | 1.0 | partially different |
Test doubles by value comparison, see <FitNesse.UserGuide.WritingAcceptanceTests.SliM.ValueComparisons Test doubles by value comparison, see <FitNesse.UserGuide.WritingAcceptanceTests.SliM.ValueComparisons
In this case no detailed diff is wanted. In this case no detailed diff is wanted.
| Detailed Diff | | Detailed Diff |
| actual double | expected double? | #comment | | actual double | expected double? | #comment |
| 1 | >=1 | ok | | 1 | >=1 | ok |
| 1 | <2 | ok | | 1 | <2 | ok |
| 1 | >1 | nok | | 1 | >1 | nok |
| 1 | =1 | ok | | 1 | =1 | ok |
| 1 | <1 | nok | | 1 | <1 | nok |
| 1 | 0<_<2 | ok | | 1 | 0<_<2 | ok |
| 1 | 2<_<0 | nok, logically wrong | | 1 | 2<_<0 | nok, logically wrong |
| 1 | 0>_>2 | wrong syntax, disable value comparison, use string comparison | | 1 | 0>_>2 | wrong syntax, disable value comparison, use string comparison |
| 1 | 2>_>0 | wrong syntax, disable value comparison, use string comparison | | 1 | 2>_>0 | wrong syntax, disable value comparison, use string comparison |
| 1.0 | ~=1 | ok | | 1.0 | ~=1 | ok |
| 1.1 | ~=1 | ok | | 1.1 | ~=1 | ok |
| 0.9 | ~=1 | ok | | 0.9 | ~=1 | ok |
| 1.0 | ~=1.0 | ok | | 1.0 | ~=1.0 | ok |
| 1.1 | ~=1.0 | nok | | 1.1 | ~=1.0 | nok |
| 0.9 | ~=1.0 | nok | | 0.9 | ~=1.0 | nok |
Test symbols by string comparison. Test symbols by string comparison.
| Detailed Diff | | Detailed Diff |
| actual symbol | expected symbol? | #comment | | actual symbol | expected symbol? | #comment |
| abc | $symbol= | | | abc | $symbol= | |
| $symbol | abc | | | $symbol | abc | |
| $symbol | xyz | | | $symbol | xyz | |
| $symbol | xbc | | | $symbol | xbc | |
| $symbol | ayc | | | $symbol | ayc | |
| $symbol | abz | | | $symbol | abz | |
| abc | $symbol | | | abc | $symbol | |
| xyz | $symbol | | | xyz | $symbol | |
| xbc | $symbol | | | xbc | $symbol | |
| ayc | $symbol | | | ayc | $symbol | |
| abz | $symbol | | | abz | $symbol | |
| | $symbol | | | | $symbol | |
Test custom comparator, see FitNesse.UserGuide.AdministeringFitNesse.ConfigurationFile Test custom comparator, see FitNesse.UserGuide.AdministeringFitNesse.ConfigurationFile
The inverse comparator fitnesse.slim.test.InverseComparator negates the method String.equals(String). The inverse comparator fitnesse.slim.test.InverseComparator negates the method String.equals(String).
| script | Detailed Diff | | script | Detailed Diff |
| note | everything not equals to 'abc' is ok | | note | everything not equals to 'abc' is ok |
| check | echo | abc | inverse:xyz | | check | echo | abc | inverse:xyz |
| note | everything not equals to 'abc' is ok | | note | everything not equals to 'abc' is ok |
| check | echo | abc | inverse:ABC | | check | echo | abc | inverse:ABC |
| note | everthing not equals to 'abc' is ok | | note | everthing not equals to 'abc' is ok |
| check | echo | abc | inverse:cba | | check | echo | abc | inverse:cba |
| note | only 'abc' is nok | | note | only 'abc' is nok |
| check | echo | abc | inverse:abc | | check | echo | abc | inverse:abc |
Test Scenario and Script Test Scenario and Script
!| Scenario | Detailed Diff Scenario Test | !| Scenario | Detailed Diff Scenario Test |
| start | Detailed Diff | | start | Detailed Diff |
| check | echo | hello | hello | | check | echo | hello | hello |
| check | echo | hello | hallo | | check | echo | hello | hallo |
!| Script | !| Script |
| Detailed Diff Scenario Test | | Detailed Diff Scenario Test |

View File

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<properties> <properties>
<Edit/> <Edit/>
<Files/> <Files/>
<Properties/> <Properties/>
<Prune/> <Prune/>
<RecentChanges/> <RecentChanges/>
<Refactor/> <Refactor/>
<Search/> <Search/>
<Test/> <Test/>
<Versions/> <Versions/>
<WhereUsed/> <WhereUsed/>
</properties> </properties>

View File

@ -1,230 +1,230 @@
!define TEST_SYSTEM {slim} !define TEST_SYSTEM {slim}
!3 Diff of failed tests !3 Diff of failed tests
!4 Original intentionally failing tests !4 Original intentionally failing tests
The subordinate page >TestPage collects the following tests. The page is disabled because of many tests fails intentionally. It is useful for manual tests only. The subordinate page >TestPage collects the following tests. The page is disabled because of many tests fails intentionally. It is useful for manual tests only.
!4 Test wrapper for test !4 Test wrapper for test
!*> Tests for type string !*> Tests for type string
!| script | !| script |
|given page|TestPage|with content|${SUT_PATH} !- |given page|TestPage|with content|${SUT_PATH} !-
!define TEST_SYSTEM {slim} !define TEST_SYSTEM {slim}
!| import | !| import |
| fitnesse.slim.test | | fitnesse.slim.test |
Test Strings by plain compare, neither custom compare nor regular expression. Test Strings by plain compare, neither custom compare nor regular expression.
In this case detailed diff is wanted. In this case detailed diff is wanted.
| Detailed Diff | | Detailed Diff |
| actual string | expected string? | #comment | | actual string | expected string? | #comment |
| abc | abc | equal | | abc | abc | equal |
| abc | xyz | completly different | | abc | xyz | completly different |
| abc | xbc | first char different | | abc | xbc | first char different |
| abc | ayc | middle char different | | abc | ayc | middle char different |
| abc | abz | last char different | | abc | abz | last char different |
| | xyz | actual empty, expected filled | | | xyz | actual empty, expected filled |
| abc | | actual filled, expected empty; will be counted as ignored | | abc | | actual filled, expected empty; will be counted as ignored |
| <&> | <&> | equal with HTML special chars | | <&> | <&> | equal with HTML special chars |
| <&> | xyz | completly different with HTML special chars | | <&> | xyz | completly different with HTML special chars |
| <&> | x&> | first char different with HTML special chars | | <&> | x&> | first char different with HTML special chars |
| <&> | <y> | middle char different with HTML special chars | | <&> | <y> | middle char different with HTML special chars |
| <&> | <&z | last char differentwith HTML special chars | | <&> | <&z | last char differentwith HTML special chars |
| | <&> | actual empty, expected filled with HTML special chars | | | <&> | actual empty, expected filled with HTML special chars |
| abc | <&> | completly different with HTML special chars | | abc | <&> | completly different with HTML special chars |
| abc | <bc | first char 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 | a&c | middle char different with HTML special chars |
| abc | ab> | last char different with HTML special chars | | abc | ab> | last char different with HTML special chars |
| Hello World | Wellcome Lord | no obvious match | | Hello World | Wellcome Lord | no obvious match |
Test Strings by regular expression. Test Strings by regular expression.
In this case no detailed diff is wanted. In this case no detailed diff is wanted.
| Detailed Diff | | Detailed Diff |
| actual string | expected string? | #comment | | actual string | expected string? | #comment |
| abc | =~/abc/ | match | | abc | =~/abc/ | match |
| abc | =~/a.c/ | match | | abc | =~/a.c/ | match |
| abc | =~/\w+/ | match | | abc | =~/\w+/ | match |
| abc | =~/\w{3}/ | match | | abc | =~/\w{3}/ | match |
| abc | =~/^\w{3}$/ | match | | abc | =~/^\w{3}$/ | match |
| abc | =~/\w{1}/ | match | | abc | =~/\w{1}/ | match |
| abc | =~/^\w{1}$/ | no match | | abc | =~/^\w{1}$/ | no match |
| abc | =~/[ABC]+/ | no match | | abc | =~/[ABC]+/ | no match |
| abc | =~/[ABC]+/i | wrong syntax, disable value comparison, use string comparison | | abc | =~/[ABC]+/i | wrong syntax, disable value comparison, use string comparison |
-!| -!|
|test results for page|TestPage|should contain|!-<span class="pass">abc</span>-!| |test results for page|TestPage|should contain|!-<span class="pass">abc</span>-!|
|test results for page|TestPage|should contain|!-[<span class="diff">abc</span>] <span class="fail">expected [</span><span class="diff">xyz</span><span class="fail">]</span>-!| |test results for page|TestPage|should contain|!-[<span class="diff">abc</span>] <span class="fail">expected [</span><span class="diff">xyz</span><span class="fail">]</span>-!|
|test results for page|TestPage|should contain|!-[<span class="diff">a</span>bc] <span class="fail">expected [</span><span class="diff">x</span><span class="fail">bc]</span>-!| |test results for page|TestPage|should contain|!-[<span class="diff">a</span>bc] <span class="fail">expected [</span><span class="diff">x</span><span class="fail">bc]</span>-!|
|test results for page|TestPage|should contain|!-[a<span class="diff">b</span>c] <span class="fail">expected [a</span><span class="diff">y</span><span class="fail">c]</span>-!| |test results for page|TestPage|should contain|!-[a<span class="diff">b</span>c] <span class="fail">expected [a</span><span class="diff">y</span><span class="fail">c]</span>-!|
|test results for page|TestPage|should contain|!-[ab<span class="diff">c</span>] <span class="fail">expected [ab</span><span class="diff">z</span><span class="fail">]</span>-!| |test results for page|TestPage|should contain|!-[ab<span class="diff">c</span>] <span class="fail">expected [ab</span><span class="diff">z</span><span class="fail">]</span>-!|
|test results for page|TestPage|should contain|!-[] <span class="fail">expected [</span><span class="diff">xyz</span><span class="fail">]</span>-!| |test results for page|TestPage|should contain|!-[] <span class="fail">expected [</span><span class="diff">xyz</span><span class="fail">]</span>-!|
|test results for page|TestPage|should contain|!-[<span class="diff">H</span>ello <span class="diff">W</span>or<span class="diff">l</span>d] <span class="fail">expected [</span><span class="diff">W</span><span class="fail">ell</span><span class="diff">c</span><span class="fail">o</span><span class="diff">me</span><span class="fail"> </span><span class="diff">L</span><span class="fail">ord]-!| |test results for page|TestPage|should contain|!-[<span class="diff">H</span>ello <span class="diff">W</span>or<span class="diff">l</span>d] <span class="fail">expected [</span><span class="diff">W</span><span class="fail">ell</span><span class="diff">c</span><span class="fail">o</span><span class="diff">me</span><span class="fail"> </span><span class="diff">L</span><span class="fail">ord]-!|
*! *!
!*> Tests for type int !*> Tests for type int
!| script | !| script |
|given page|TestPage|with content|${SUT_PATH} !- |given page|TestPage|with content|${SUT_PATH} !-
!define TEST_SYSTEM {slim} !define TEST_SYSTEM {slim}
!| import | !| import |
| fitnesse.slim.test | | fitnesse.slim.test |
Test integers by string comparison. Test integers by string comparison.
In this case detailed diff ist wanted. In this case detailed diff ist wanted.
| Detailed Diff | | Detailed Diff |
| actual int | expected int? | #comment | | actual int | expected int? | #comment |
| 1 | 1 | equal | | 1 | 1 | equal |
| 1 | 2 | completly different | | 1 | 2 | completly different |
| 1 | 10 | partially different | | 1 | 10 | partially different |
| | 1 | completly different | | | 1 | completly different |
Test integers by value comparison, see <FitNesse.UserGuide.WritingAcceptanceTests.SliM.ValueComparisons Test integers by value comparison, see <FitNesse.UserGuide.WritingAcceptanceTests.SliM.ValueComparisons
In this case no detailed diff is wanted. In this case no detailed diff is wanted.
| Detailed Diff | | Detailed Diff |
| actual int | expected int? | #comment | | actual int | expected int? | #comment |
| 1 | >=1 | ok | | 1 | >=1 | ok |
| 1 | <2 | ok | | 1 | <2 | ok |
| 1 | >1 | nok | | 1 | >1 | nok |
| 1 | =1 | ok | | 1 | =1 | ok |
| 1 | <1 | nok | | 1 | <1 | nok |
| 1 | 0<_<2 | ok | | 1 | 0<_<2 | ok |
| 1 | 2<_<0 | nok, logically wrong | | 1 | 2<_<0 | nok, logically wrong |
| 1 | 0>_>2 | wrong syntax, disable value comparison, use string comparison | | 1 | 0>_>2 | wrong syntax, disable value comparison, use string comparison |
| 1 | 2>_>0 | wrong syntax, disable value comparison, use string comparison | | 1 | 2>_>0 | wrong syntax, disable value comparison, use string comparison |
-!| -!|
|test results for page|TestPage|should contain|| |test results for page|TestPage|should contain||
*! *!
!*> Tests for type double !*> Tests for type double
!| script | !| script |
|given page|TestPage|with content|${SUT_PATH} !- |given page|TestPage|with content|${SUT_PATH} !-
!define TEST_SYSTEM {slim} !define TEST_SYSTEM {slim}
!| import | !| import |
| fitnesse.slim.test | | fitnesse.slim.test |
Test doubles by string comparison. Test doubles by string comparison.
In this case detailed diff ist wanted. In this case detailed diff ist wanted.
| Detailed Diff | | Detailed Diff |
| actual double | expected double? | #comment | | actual double | expected double? | #comment |
| 1.0 | 1.0 | equal | | 1.0 | 1.0 | equal |
| 1.1 | 222 | completly different | | 1.1 | 222 | completly different |
| 1.0 | 10 | partially different | | 1.0 | 10 | partially different |
| | 1.0 | partially different | | | 1.0 | partially different |
Test doubles by value comparison, see <FitNesse.UserGuide.WritingAcceptanceTests.SliM.ValueComparisons Test doubles by value comparison, see <FitNesse.UserGuide.WritingAcceptanceTests.SliM.ValueComparisons
In this case no detailed diff is wanted. In this case no detailed diff is wanted.
| Detailed Diff | | Detailed Diff |
| actual double | expected double? | #comment | | actual double | expected double? | #comment |
| 1 | >=1 | ok | | 1 | >=1 | ok |
| 1 | <2 | ok | | 1 | <2 | ok |
| 1 | >1 | nok | | 1 | >1 | nok |
| 1 | =1 | ok | | 1 | =1 | ok |
| 1 | <1 | nok | | 1 | <1 | nok |
| 1 | 0<_<2 | ok | | 1 | 0<_<2 | ok |
| 1 | 2<_<0 | nok, logically wrong | | 1 | 2<_<0 | nok, logically wrong |
| 1 | 0>_>2 | wrong syntax, disable value comparison, use string comparison | | 1 | 0>_>2 | wrong syntax, disable value comparison, use string comparison |
| 1 | 2>_>0 | wrong syntax, disable value comparison, use string comparison | | 1 | 2>_>0 | wrong syntax, disable value comparison, use string comparison |
| 1.0 | ~=1 | ok | | 1.0 | ~=1 | ok |
| 1.1 | ~=1 | ok | | 1.1 | ~=1 | ok |
| 0.9 | ~=1 | ok | | 0.9 | ~=1 | ok |
| 1.0 | ~=1.0 | ok | | 1.0 | ~=1.0 | ok |
| 1.1 | ~=1.0 | nok | | 1.1 | ~=1.0 | nok |
| 0.9 | ~=1.0 | nok | | 0.9 | ~=1.0 | nok |
-!| -!|
|test results for page|TestPage|should contain|| |test results for page|TestPage|should contain||
*! *!
!*> Tests of fitnesse symbols !*> Tests of fitnesse symbols
!| script | !| script |
|given page|TestPage|with content|${SUT_PATH} !- |given page|TestPage|with content|${SUT_PATH} !-
!define TEST_SYSTEM {slim} !define TEST_SYSTEM {slim}
!| import | !| import |
| fitnesse.slim.test | | fitnesse.slim.test |
Test symbols by string comparison. Test symbols by string comparison.
| Detailed Diff | | Detailed Diff |
| actual symbol | expected symbol? | #comment | | actual symbol | expected symbol? | #comment |
| abc | $symbol= | | | abc | $symbol= | |
| $symbol | abc | | | $symbol | abc | |
| $symbol | xyz | | | $symbol | xyz | |
| $symbol | xbc | | | $symbol | xbc | |
| $symbol | ayc | | | $symbol | ayc | |
| $symbol | abz | | | $symbol | abz | |
| abc | $symbol | | | abc | $symbol | |
| xyz | $symbol | | | xyz | $symbol | |
| xbc | $symbol | | | xbc | $symbol | |
| ayc | $symbol | | | ayc | $symbol | |
| abz | $symbol | | | abz | $symbol | |
| | $symbol | | | | $symbol | |
-!| -!|
|test results for page|TestPage|should contain|!-<span class="pass">abc</span>-!| |test results for page|TestPage|should contain|!-<span class="pass">abc</span>-!|
|test results for page|TestPage|should contain|!-[<span class="diff">abc</span>] <span class="fail">expected [</span><span class="diff">xyz</span><span class="fail">]</span>-!| |test results for page|TestPage|should contain|!-[<span class="diff">abc</span>] <span class="fail">expected [</span><span class="diff">xyz</span><span class="fail">]</span>-!|
|test results for page|TestPage|should contain|!-[<span class="diff">a</span>bc] <span class="fail">expected [</span><span class="diff">x</span><span class="fail">bc]</span>-!| |test results for page|TestPage|should contain|!-[<span class="diff">a</span>bc] <span class="fail">expected [</span><span class="diff">x</span><span class="fail">bc]</span>-!|
|test results for page|TestPage|should contain|!-[a<span class="diff">b</span>c] <span class="fail">expected [a</span><span class="diff">y</span><span class="fail">c]</span>-!| |test results for page|TestPage|should contain|!-[a<span class="diff">b</span>c] <span class="fail">expected [a</span><span class="diff">y</span><span class="fail">c]</span>-!|
|test results for page|TestPage|should contain|!-[ab<span class="diff">c</span>] <span class="fail">expected [ab</span><span class="diff">z</span><span class="fail">]</span>-!| |test results for page|TestPage|should contain|!-[ab<span class="diff">c</span>] <span class="fail">expected [ab</span><span class="diff">z</span><span class="fail">]</span>-!|
|test results for page|TestPage|should contain|!-&lt;span class="pass"&gt;$symbol-&gt;[abc]&lt;/span&gt;-!| |test results for page|TestPage|should contain|!-&lt;span class="pass"&gt;$symbol-&gt;[abc]&lt;/span&gt;-!|
|test results for page|TestPage|should contain|!-[<span class="diff">xyz</span>] <span class="fail">expected [$symbol-&gt;[</span><span class="diff">abc</span><span class="fail">]]</span>-!| |test results for page|TestPage|should contain|!-[<span class="diff">xyz</span>] <span class="fail">expected [$symbol-&gt;[</span><span class="diff">abc</span><span class="fail">]]</span>-!|
|test results for page|TestPage|should contain|!-[<span class="diff">x</span>bc] <span class="fail">expected [$symbol-&gt;[</span><span class="diff">a</span><span class="fail">bc]]</span>-!| |test results for page|TestPage|should contain|!-[<span class="diff">x</span>bc] <span class="fail">expected [$symbol-&gt;[</span><span class="diff">a</span><span class="fail">bc]]</span>-!|
|test results for page|TestPage|should contain|!-[a<span class="diff">y</span>c] <span class="fail">expected [$symbol-&gt;[a</span><span class="diff">b</span><span class="fail">c]]</span>-!| |test results for page|TestPage|should contain|!-[a<span class="diff">y</span>c] <span class="fail">expected [$symbol-&gt;[a</span><span class="diff">b</span><span class="fail">c]]</span>-!|
|test results for page|TestPage|should contain|!-[ab<span class="diff">z</span>] <span class="fail">expected [$symbol-&gt;[ab</span><span class="diff">c</span><span class="fail">]]</span>-!| |test results for page|TestPage|should contain|!-[ab<span class="diff">z</span>] <span class="fail">expected [$symbol-&gt;[ab</span><span class="diff">c</span><span class="fail">]]</span>-!|
|test results for page|TestPage|should contain|!-[] <span class="fail">expected [$symbol-&gt;[</span><span class="diff">abc</span><span class="fail">]]</span>-!| |test results for page|TestPage|should contain|!-[] <span class="fail">expected [$symbol-&gt;[</span><span class="diff">abc</span><span class="fail">]]</span>-!|
*! *!
!*> Tests of custom comparator !*> Tests of custom comparator
!| script | !| script |
|given page|TestPage|with content|${SUT_PATH} !- |given page|TestPage|with content|${SUT_PATH} !-
!define TEST_SYSTEM {slim} !define TEST_SYSTEM {slim}
!| import | !| import |
| fitnesse.slim.test | | fitnesse.slim.test |
Test custom comparator, see FitNesse.UserGuide.AdministeringFitNesse.ConfigurationFile Test custom comparator, see FitNesse.UserGuide.AdministeringFitNesse.ConfigurationFile
The inverse comparator fitnesse.slim.test.InverseComparator negates the method String.equals(String). The inverse comparator fitnesse.slim.test.InverseComparator negates the method String.equals(String).
| script | Detailed Diff | | script | Detailed Diff |
| note | everything not equals to 'abc' is ok | | note | everything not equals to 'abc' is ok |
| check | echo | abc | inverse:xyz | | check | echo | abc | inverse:xyz |
| note | everything not equals to 'abc' is ok | | note | everything not equals to 'abc' is ok |
| check | echo | abc | inverse:ABC | | check | echo | abc | inverse:ABC |
| note | everthing not equals to 'abc' is ok | | note | everthing not equals to 'abc' is ok |
| check | echo | abc | inverse:cba | | check | echo | abc | inverse:cba |
| note | only 'abc' is nok | | note | only 'abc' is nok |
| check | echo | abc | inverse:abc | | check | echo | abc | inverse:abc |
-!| -!|
|test results for page|TestPage|should contain|| |test results for page|TestPage|should contain||
*! *!
!*> Tests of scenario !*> Tests of scenario
!| script | !| script |
|given page|TestPage|with content|${SUT_PATH} !- |given page|TestPage|with content|${SUT_PATH} !-
!define TEST_SYSTEM {slim} !define TEST_SYSTEM {slim}
!| import | !| import |
| fitnesse.slim.test | | fitnesse.slim.test |
Test Scenario and Script Test Scenario and Script
!| Scenario | Detailed Diff Scenario Test | !| Scenario | Detailed Diff Scenario Test |
| start | Detailed Diff | | start | Detailed Diff |
| check | echo | hello | hello | | check | echo | hello | hello |
| check | echo | hello | hallo | | check | echo | hello | hallo |
!| Script | !| Script |
| Detailed Diff Scenario Test | | Detailed Diff Scenario Test |
-!| -!|
|test results for page|TestPage|should contain|!-<span class="pass">hello</span>-!| |test results for page|TestPage|should contain|!-<span class="pass">hello</span>-!|
|test results for page|TestPage|should contain|!-[h<span class="diff">e</span>llo] <span class="fail">expected [h</span><span class="diff">a</span><span class="fail">llo]</span>-!| |test results for page|TestPage|should contain|!-[h<span class="diff">e</span>llo] <span class="fail">expected [h</span><span class="diff">a</span><span class="fail">llo]</span>-!|
*! *!

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<properties> <properties>
<Edit>true</Edit> <Edit>true</Edit>
<Files>true</Files> <Files>true</Files>
<Properties>true</Properties> <Properties>true</Properties>
<RecentChanges>true</RecentChanges> <RecentChanges>true</RecentChanges>
<Refactor>true</Refactor> <Refactor>true</Refactor>
<Search>true</Search> <Search>true</Search>
<Test>true</Test> <Test>true</Test>
<Versions>true</Versions> <Versions>true</Versions>
<WhereUsed>true</WhereUsed> <WhereUsed>true</WhereUsed>
</properties> </properties>

View File

@ -1,33 +1,33 @@
|import | |import |
|fitnesse.slim.test| |fitnesse.slim.test|
There was a bug in the Scenario selection process that caused a scenario with no inputs to be selected when it should have been method on the driver class. This happened because the !-ScenarioTable-! class was enhanced to try all rows as parameterized. So it took "login" and tried "login _ ". This resulted in the "login" scenario being used instead of the "loginWithUsernameAndPassword" method when "connect as with" scenario was called. This page demonstrates the fix. There was a bug in the Scenario selection process that caused a scenario with no inputs to be selected when it should have been method on the driver class. This happened because the !-ScenarioTable-! class was enhanced to try all rows as parameterized. So it took "login" and tried "login _ ". This resulted in the "login" scenario being used instead of the "loginWithUsernameAndPassword" method when "connect as with" scenario was called. This page demonstrates the fix.
!2 Scenario with no arguments and a shared root !2 Scenario with no arguments and a shared root
!|scenario |login | !|scenario |login |
|connect to server| |connect to server|
!2 !2
!|scenario |connect as|username |with|password| !|scenario |connect as|username |with|password|
|login with username|@username |and Password|@password | |login with username|@username |and Password|@password |
!2 Scenario With one argument and a shared root. !2 Scenario With one argument and a shared root.
!|scenario |login with|name| !|scenario |login with|name|
|connect to server as|@name | |connect to server as|@name |
!2 Now calling a scenario that does take arguments, but since it isn't in parameterized format, the scenario with an argument isn't called, even though it shares a common root. !2 Now calling a scenario that does take arguments, but since it isn't in parameterized format, the scenario with an argument isn't called, even though it shares a common root.
!|scenario |connect as|username |with|password| !|scenario |connect as|username |with|password|
|login with username|@username |and Password|@password | |login with username|@username |and Password|@password |
!|script | !|script |
|start |Login Dialog Driver|bob |xyzz| |start |Login Dialog Driver|bob |xyzz|
|connect as|bob |with|xyzz| |connect as|bob |with|xyzz|

View File

@ -1,12 +1,12 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<properties> <properties>
<Edit>true</Edit> <Edit>true</Edit>
<Files>true</Files> <Files>true</Files>
<Properties>true</Properties> <Properties>true</Properties>
<RecentChanges>true</RecentChanges> <RecentChanges>true</RecentChanges>
<Refactor>true</Refactor> <Refactor>true</Refactor>
<Search>true</Search> <Search>true</Search>
<Test>true</Test> <Test>true</Test>
<Versions>true</Versions> <Versions>true</Versions>
<WhereUsed>true</WhereUsed> <WhereUsed>true</WhereUsed>
</properties> </properties>

View File

@ -1,14 +1,14 @@
Create an absolute symbolic link from a sub-page: Create an absolute symbolic link from a sub-page:
First we need to create some pages to play with. First we need to create some pages to play with.
!|Page creator.| !|Page creator.|
|Page name. |PageContents. |valid?| |Page name. |PageContents. |valid?|
|LinkingPage |LINKING PAGE |true | |LinkingPage |LINKING PAGE |true |
|LinkingPage.LinkingChild|LINKING CHILD |true | |LinkingPage.LinkingChild|LINKING CHILD |true |
|LinkedPage |LINKED PAGE |true | |LinkedPage |LINKED PAGE |true |
|LinkedPage.LinkedChild |LINKED CHILD |true | |LinkedPage.LinkedChild |LINKED CHILD |true |
Now we create a symbolic link named !-SymLink-!. This links !-LinkedPage.LinkedChild-! as a child of !-LinkingPage.LinkingChild-!. Now we create a symbolic link named !-SymLink-!. This links !-LinkedPage.LinkedChild-! as a child of !-LinkingPage.LinkingChild-!.
!|Response Requester.| !|Response Requester.|
|uri |status?| |uri |status?|
|LinkingPage.LinkingChild?responder=symlink&linkName=SymLink&linkPath=.LinkedPage.LinkedChild|303| |LinkingPage.LinkingChild?responder=symlink&linkName=SymLink&linkPath=.LinkedPage.LinkedChild|303|

View File

@ -1,10 +1,10 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<properties> <properties>
<Files/> <Files/>
<Help></Help> <Help></Help>
<LastModified>20071209231745</LastModified> <LastModified>20071209231745</LastModified>
<RecentChanges/> <RecentChanges/>
<Suites></Suites> <Suites></Suites>
<saveId>1197255276583</saveId> <saveId>1197255276583</saveId>
<ticketId>-2802271540647210678</ticketId> <ticketId>-2802271540647210678</ticketId>
</properties> </properties>

View File

@ -1,13 +1,13 @@
Create an absolute symbolic link from a sub-page: Create an absolute symbolic link from a sub-page:
First we need to create some pages to play with. First we need to create some pages to play with.
!|Page creator.| !|Page creator.|
|Page name. |PageContents. |valid?| |Page name. |PageContents. |valid?|
|LinkingPage |LINKING PAGE |true | |LinkingPage |LINKING PAGE |true |
|LinkingPage.LinkingChild|LINKING CHILD |true | |LinkingPage.LinkingChild|LINKING CHILD |true |
|LinkingPage.LinkedChild |LINKED CHILD |true | |LinkingPage.LinkedChild |LINKED CHILD |true |
Now we create a symbolic link named !-SymLink-!. This links !-LinkedPage.LinkedChild-! as a child of !-LinkingPage.LinkingChild-!. Now we create a symbolic link named !-SymLink-!. This links !-LinkedPage.LinkedChild-! as a child of !-LinkingPage.LinkingChild-!.
!|Response Requester.| !|Response Requester.|
|uri |status?| |uri |status?|
|LinkingPage.LinkingChild?responder=symlink&linkName=SymLink&linkPath=<LinkingPage.LinkedChild|303| |LinkingPage.LinkingChild?responder=symlink&linkName=SymLink&linkPath=<LinkingPage.LinkedChild|303|

View File

@ -1,10 +1,10 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<properties> <properties>
<Files/> <Files/>
<Help></Help> <Help></Help>
<LastModified>20071209231818</LastModified> <LastModified>20071209231818</LastModified>
<RecentChanges/> <RecentChanges/>
<Suites></Suites> <Suites></Suites>
<saveId>1197255523311</saveId> <saveId>1197255523311</saveId>
<ticketId>-2905294764201163185</ticketId> <ticketId>-2905294764201163185</ticketId>
</properties> </properties>

View File

@ -1,15 +1,15 @@
Create an nested backward symbolic link from a sub-page: Create an nested backward symbolic link from a sub-page:
First we need to create some pages to play with. First we need to create some pages to play with.
!|Page creator.| !|Page creator.|
|Page name. |PageContents. |valid?| |Page name. |PageContents. |valid?|
|LinkingPage |LINKING PAGE |true | |LinkingPage |LINKING PAGE |true |
|LinkingPage.LinkingChild |LINKING CHILD |true | |LinkingPage.LinkingChild |LINKING CHILD |true |
|LinkingPage.LinkingChild.LinkingGrandChild |LINKING GRAND CHILD |true | |LinkingPage.LinkingChild.LinkingGrandChild |LINKING GRAND CHILD |true |
|LinkingPage.LinkingChild.LinkingGrandChild.LinkingGreatGrandChild|LINKING GREAT GRAND CHILD |true | |LinkingPage.LinkingChild.LinkingGrandChild.LinkingGreatGrandChild|LINKING GREAT GRAND CHILD |true |
|LinkingPage.LinkingChild.LinkedChild |LINKED CHILD |true | |LinkingPage.LinkingChild.LinkedChild |LINKED CHILD |true |
Now we create a symbolic link named !-SymLink-!. This links !-LinkedPage.LinkedChild-! as a child of !-LinkingPage.LinkingChild-!. Now we create a symbolic link named !-SymLink-!. This links !-LinkedPage.LinkedChild-! as a child of !-LinkingPage.LinkingChild-!.
!|Response Requester.| !|Response Requester.|
|uri |status?| |uri |status?|
|LinkingPage.LinkingChild.LinkingGrandChild.LinkingGreatGrandChild?responder=symlink&linkName=SymLink&linkPath=<LinkingChild.LinkedChild|303| |LinkingPage.LinkingChild.LinkingGrandChild.LinkingGreatGrandChild?responder=symlink&linkName=SymLink&linkPath=<LinkingChild.LinkedChild|303|

View File

@ -1,10 +1,10 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<properties> <properties>
<Files/> <Files/>
<Help></Help> <Help></Help>
<LastModified>20071212153458</LastModified> <LastModified>20071212153458</LastModified>
<RecentChanges/> <RecentChanges/>
<Suites></Suites> <Suites></Suites>
<saveId>1197318232254</saveId> <saveId>1197318232254</saveId>
<ticketId>-6614712250920689672</ticketId> <ticketId>-6614712250920689672</ticketId>
</properties> </properties>

View File

@ -1,15 +1,15 @@
Creating a symbolic link is done in the properties view of the page that will contain the link. There is a form where a user supplies a name for the link and a path for the linked page. When submitted the URL has the following form: Creating a symbolic link is done in the properties view of the page that will contain the link. There is a form where a user supplies a name for the link and a path for the linked page. When submitted the URL has the following form:
!-http://host/PathToPage?responder=symlink&linkName=<linkName>&linkPath=<linkPath>-! !-http://host/PathToPage?responder=symlink&linkName=<linkName>&linkPath=<linkPath>-!
First we need to create some pages to play with. First we need to create some pages to play with.
!|Page creator.| !|Page creator.|
|Page name.|valid?| |Page name.|valid?|
|LinkingPage|true| |LinkingPage|true|
|LinkedPage|true| |LinkedPage|true|
Now we create a symbolic link named !-SymLink-!. This links !-LinkedPage-! as a child of !-LinkingPage-!. Now we create a symbolic link named !-SymLink-!. This links !-LinkedPage-! as a child of !-LinkingPage-!.
!|Response Requester.| !|Response Requester.|
|uri |status?| |uri |status?|
|LinkingPage?responder=symlink&linkName=SymLink&linkPath=LinkedPage|303| |LinkingPage?responder=symlink&linkName=SymLink&linkPath=LinkedPage|303|

View File

@ -1,10 +1,10 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<properties> <properties>
<Files/> <Files/>
<Help></Help> <Help></Help>
<LastModified>20071209231838</LastModified> <LastModified>20071209231838</LastModified>
<RecentChanges/> <RecentChanges/>
<Suites></Suites> <Suites></Suites>
<saveId>1197229524174</saveId> <saveId>1197229524174</saveId>
<ticketId>5360217332855886973</ticketId> <ticketId>5360217332855886973</ticketId>
</properties> </properties>

View File

@ -1,12 +1,12 @@
Create a symbolic link to a sub-page: Create a symbolic link to a sub-page:
First we need to create some pages to play with. First we need to create some pages to play with.
!|Page creator.| !|Page creator.|
|Page name. |PageContents. |valid?| |Page name. |PageContents. |valid?|
|LinkingPage |LINKING PAGE |true | |LinkingPage |LINKING PAGE |true |
|LinkingPage.LinkedChild |LINKED CHILD |true | |LinkingPage.LinkedChild |LINKED CHILD |true |
Now we create a symbolic link named !-SymLink-!. This links !-LinkingPage.LinkedChild-! as a child of !-LinkingPage-!. Now we create a symbolic link named !-SymLink-!. This links !-LinkingPage.LinkedChild-! as a child of !-LinkingPage-!.
!|Response Requester.| !|Response Requester.|
|uri |status?| |uri |status?|
|LinkingPage?responder=symlink&linkName=SymLink&linkPath=>LinkedChild|303| |LinkingPage?responder=symlink&linkName=SymLink&linkPath=>LinkedChild|303|

View File

@ -1,14 +1,14 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<properties> <properties>
<Edit>true</Edit> <Edit>true</Edit>
<Files>true</Files> <Files>true</Files>
<LastModified>20071209210332</LastModified> <LastModified>20071209210332</LastModified>
<Properties>true</Properties> <Properties>true</Properties>
<RecentChanges>true</RecentChanges> <RecentChanges>true</RecentChanges>
<Refactor>true</Refactor> <Refactor>true</Refactor>
<Search>true</Search> <Search>true</Search>
<Versions>true</Versions> <Versions>true</Versions>
<WhereUsed>true</WhereUsed> <WhereUsed>true</WhereUsed>
<saveId>1197252212825</saveId> <saveId>1197252212825</saveId>
<ticketId>6202123951021509855</ticketId> <ticketId>6202123951021509855</ticketId>
</properties> </properties>

View File

@ -1,14 +1,14 @@
!c !3 Symbolic Links !c !3 Symbolic Links
Symbolic Links allow a user to easily create parent-child links between pages without permanently affecting the wiki structure. One common reason need for Symbolic Links is the the testing of a system on multiple environments. For example, imagine an application that site on top of an Oracle database. Hundreds of FitNesse tests have been written for this application using Oracle settings and then the team is confronted with the need to run the application on !-MySql-!. Getting both databases running under the same suite of tests can be very difficult and may result in duplicating all the tests. With Symbolic Links, the database configurations can be stored in high level pages along with appropriate path elements. Then the high-level pages may symbolically link to the test suite. In this manner one suite of tests can be executed in multiple environments. Symbolic Links allow a user to easily create parent-child links between pages without permanently affecting the wiki structure. One common reason need for Symbolic Links is the the testing of a system on multiple environments. For example, imagine an application that site on top of an Oracle database. Hundreds of FitNesse tests have been written for this application using Oracle settings and then the team is confronted with the need to run the application on !-MySql-!. Getting both databases running under the same suite of tests can be very difficult and may result in duplicating all the tests. With Symbolic Links, the database configurations can be stored in high level pages along with appropriate path elements. Then the high-level pages may symbolically link to the test suite. In this manner one suite of tests can be executed in multiple environments.
>TestCreatingRelativeSymbolicLink >TestCreatingRelativeSymbolicLink
>TestCreatingAbsoluteSymbolicLink >TestCreatingAbsoluteSymbolicLink
>TestCreatingSubPageSymbolicLink >TestCreatingSubPageSymbolicLink
>TestCreatingBackwardSymbolicLink >TestCreatingBackwardSymbolicLink
>TestRemovingSymbolicLink >TestRemovingSymbolicLink
>TestSymbolicLinkBehavior >TestSymbolicLinkBehavior
---- ----
All Subpages: All Subpages:
!contents !contents

View File

@ -1,12 +1,12 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<properties> <properties>
<Files/> <Files/>
<Help/> <Help/>
<LastModified>20071209232537</LastModified> <LastModified>20071209232537</LastModified>
<RecentChanges/> <RecentChanges/>
<Suite/> <Suite/>
<Suites/> <Suites/>
<WhereUsed/> <WhereUsed/>
<saveId>1197260737340</saveId> <saveId>1197260737340</saveId>
<ticketId>159061011507139978</ticketId> <ticketId>159061011507139978</ticketId>
</properties> </properties>

View File

@ -4,12 +4,12 @@
| this is ''italic'' text | this is <i>italic</i> text | italic widget | | this is ''italic'' text | this is <i>italic</i> text | italic widget |
| this is '''bold''' text | this is <b>bold</b> text | bold widget | | this is '''bold''' text | this is <b>bold</b> text | bold widget |
| !c This is centered text | <center>This is centered text</center> | | !c This is centered text | <center>This is centered text</center> |
| !1 header | <h1>header</h1> | |!1 header |<h1 id="header">header</h1> |
| !2 header | <h2>header</h2> | |!2 header |<h2 id="header">header</h2> |
| !3 header | <h3>header</h3> | |!3 header |<h3 id="header">header</h3> |
| !4 header | <h4>header</h4> | |!4 header |<h4 id="header">header</h4> |
| !5 header | <h5>header</h5> | |!5 header |<h5 id="header">header</h5> |
| !6 header | <h6>header</h6> | |!6 header |<h6 id="header">header</h6> |
| http://files/x | <a href="files/x">http://files/x</a> | file link | | http://files/x | <a href="files/x">http://files/x</a> | file link |
| http://fitnesse.org | <a href="http://fitnesse.org">http://fitnesse.org</a> | http link | | http://fitnesse.org | <a href="http://fitnesse.org">http://fitnesse.org</a> | http link |
| SomePage | SomePage<a title="create page" href="SomePage\?edit&nonExistent=true">\[\?\]</a> | missing wiki word | | SomePage | SomePage<a title="create page" href="SomePage\?edit&nonExistent=true">\[\?\]</a> | missing wiki word |

View File

@ -1,15 +1,15 @@
<?xml version="1.0"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<properties> <properties>
<Edit/> <Edit/>
<Files/> <Files/>
<Properties/> <Properties/>
<RecentChanges/> <RecentChanges/>
<Refactor/> <Refactor/>
<Search/> <Search/>
<Suites>slim</Suites> <Suites>slim</Suites>
<Test/> <Test/>
<Versions/> <Versions/>
<WhereUsed/> <WhereUsed/>
<saveId>1233779413308</saveId> <saveId>1233779413308</saveId>
<ticketId>-5607632332474131237</ticketId> <ticketId>-5607632332474131237</ticketId>
</properties> </properties>

View File

@ -1,9 +1,9 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<properties> <properties>
<Files/> <Files/>
<LastModified>20071130010014</LastModified> <LastModified>20071130010014</LastModified>
<RecentChanges/> <RecentChanges/>
<Suites></Suites> <Suites></Suites>
<Test/> <Test/>
<WhereUsed/> <WhereUsed/>
</properties> </properties>

View File

@ -38,7 +38,10 @@ To reuse one of the existing styles as an entry point, create a custom css file
{{{ {{{
@import url(fitnesse_straight.css); @import url(fitnesse_straight.css);
}}}Now you can simply add custom elements to it. }}}
Now you can simply add custom elements to it.
For example, changing the logo to something fitting your project can be done by placing a 200 x 37 logo file names ''fitnesse-logo-small.png'' file in files/images/ and then shift-f5 reloading the page.
!3 Create a theme based on Bootstrap !3 Create a theme based on Bootstrap
The Bootstrap theme took a slightly different route. It's using a subfolder for it's resources. The skeleton.vm template  ([[files/fitnesse/bootstrap/templates/skeleton.vm][http://files/fitnesse/bootstrap/templates/skeleton.vm]]) contains the general markup and layout. It also contains references to the other resources used. You can find the resources used to compile the bootstrap style (lesscss templates) in fitnesse.jar: fitnesse/resources/bootstrap/less. Use those as a basis for the custom theme. There are a few more template files that are overwritten by the bootstrap theme. If the theme needs to be reusable, refer (''#parse'') the the bootstrap templates for a start and add your own customisations along the way. The Bootstrap theme took a slightly different route. It's using a subfolder for it's resources. The skeleton.vm template  ([[files/fitnesse/bootstrap/templates/skeleton.vm][http://files/fitnesse/bootstrap/templates/skeleton.vm]]) contains the general markup and layout. It also contains references to the other resources used. You can find the resources used to compile the bootstrap style (lesscss templates) in fitnesse.jar: fitnesse/resources/bootstrap/less. Use those as a basis for the custom theme. There are a few more template files that are overwritten by the bootstrap theme. If the theme needs to be reusable, refer (''#parse'') the the bootstrap templates for a start and add your own customisations along the way.

View File

@ -1,10 +1,9 @@
Headers are created by prefixing a line with !1 or !2 or !3 Headers are created by prefixing a line with !1 or !2 or !3 or !4 or !5 or !6
|!c '''Markup Text'''|!c '''Displayed as'''|
|!- !1 Title -!|!1 Title|
|!- !2 Header -!|!2 Header|
|!- !3 Second Header -!|!3 Second Header|
|!c '''Markup Text''' |!c '''Displayed as'''|
|!- !1 Title -!|!1 Title |
|!- !2 Header -!|!2 Header |
|!- !3 Second Header -!|!3 Second Header |
|!- !4 Third Header -!|!4 Third Header |
|!- !5 Fourth Header -!|!5 Fourth Header |
|!- !6 Fifth Header -!|!6 Fifth Header |

View File

@ -0,0 +1,10 @@
Headings are created by prefixing a line with !headings
|!c '''Markup Text''' |!c '''Displayed as'''|
|!- !heading -!|Table of contents |
Markup:
{{{!headings -style decimal}}}
|''' argument '''|''' description '''|
|-style |The CSS style of the list items, possible values: decimal, decimal-leading-zero, lower-roman, upper-roman, lower-alpha, upper-alpha, none. Default value: decimal. |

View File

@ -0,0 +1,7 @@
<?xml version="1.0"?>
<properties>
<Files/>
<LastModified>20090228113826</LastModified>
<RecentChanges>true</RecentChanges>
<WhereUsed/>
</properties>

View File

@ -8,6 +8,7 @@ The !-FitNesse-! markup language is straightforward to learn, and powerful eno
| [[Style][>MarkupStyle]] | ''Setting the style of some text.'' | | [[Style][>MarkupStyle]] | ''Setting the style of some text.'' |
| [[Cross Reference][>MarkupCrossReference]] | ''Add a cross reference to another page.'' | | [[Cross Reference][>MarkupCrossReference]] | ''Add a cross reference to another page.'' |
| [[Headers][>MarkupHeaders]] | ''Setting a line as a title or section header.'' | | [[Headers][>MarkupHeaders]] | ''Setting a line as a title or section header.'' |
| [[Headings][>MarkupHeadings]] | ''Generate a table of contents of all headers from within a wiki page.'' |
| [[Centering][>MarkupCenter]] | ''Centering a line.'' | | [[Centering][>MarkupCenter]] | ''Centering a line.'' |
| [[Notes][>MarkupNote]] | ''Making a note.'' | | [[Notes][>MarkupNote]] | ''Making a note.'' |
| [[Horizontal Rules][>MarkupHorizontalRule]] | ''Drawing a horizontal separator.'' | | [[Horizontal Rules][>MarkupHorizontalRule]] | ''Drawing a horizontal separator.'' |

View File

@ -1,4 +1,4 @@
The syntax of a wiki word is ''Camel Case'': an alternating pattern of upper and lower case letters. Strictly speaking a wiki word is a string of two more more capital letters with lower case letters or numbers between them. The syntax of a wiki word is ''Camel Case'': an alternating pattern of upper and lower case letters. Strictly speaking a wiki word is a string of two more capital letters with lower case letters or numbers between them.
* '''!-BobMartin-!''' is a wiki word. * '''!-BobMartin-!''' is a wiki word.
* '''!-SalesReport1972-!''' is a wiki word. * '''!-SalesReport1972-!''' is a wiki word.
@ -7,4 +7,4 @@ The syntax of a wiki word is ''Camel Case'': an alternating pattern of upper and
* '''!-RcM-!''' is a wiki word because it is two or more capitals separated by lower case letters. * '''!-RcM-!''' is a wiki word because it is two or more capitals separated by lower case letters.
* '''!-ItDoesNotMatterHowManyCapitalsThereAreYouCanHave1000IfYouLike-!''' is a wiki word with lots of capitals. * '''!-ItDoesNotMatterHowManyCapitalsThereAreYouCanHave1000IfYouLike-!''' is a wiki word with lots of capitals.
---- ----
!note The Java Regular expression that we are using to represent a wiki word is: {{{\b[A-Z](?:[a-z0-9]+[A-Z][a-z0-9]*)+}}} !note The Java Regular expression that we are using to represent a wiki word is: {{{\b[A-Z](?:[a-z0-9]+[A-Z][a-z0-9]*)+}}}

View File

@ -43,12 +43,15 @@
|${CODE}''over-text''${NUL}'''!-----------!'''${NUL}''under-text''${CODEend}|thicker | |${CODE}''over-text''${NUL}'''!-----------!'''${NUL}''under-text''${CODEend}|thicker |
) )
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
!define HEADINGS (${BANG}'''1''' ''largest heading text'' !define HEADER LINES (${BANG}'''1''' ''largest heading text''
${BANG}'''2''' ''middle heading text'' ${BANG}'''2''' ''middle heading text''
${BANG}'''3''' ''smaller heading text'' ${BANG}'''3''' ''smaller heading text''
and so on up to ${BANG}'''6''' and so on up to ${BANG}'''6'''
) )
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
!define HEADINGS (${BANG}'''!headings''' generates a list of all header lines
)
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
!define CollapsibleEXPANDED (${BANG}'''*''' ${OPT}''title''${OPTend} !define CollapsibleEXPANDED (${BANG}'''*''' ${OPT}''title''${OPTend}
${SPC}${SPC}'' multi-line wiki text '' ${SPC}${SPC}'' multi-line wiki text ''
${SPC}${SPC}'' N.B.: Multiple asterisks are allowed, e.g.,'' ${BANG}'''****''' ${TEXT} ${SPC}${SPC}'' N.B.: Multiple asterisks are allowed, e.g.,'' ${BANG}'''****''' ${TEXT}
@ -106,7 +109,7 @@ ${SPC}${SPC}'' N.B.: Multiple asterisks are allowed, e.g.,'' ${BANG}'''****'''${
) )
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
!define TocInsert (| Contents List | ${CODE} ${BANG}'''contents''' ${CODEend} | !define TocInsert (| Contents List | ${CODE} ${BANG}'''contents''' ${CODEend} |
| Contents Tree | ${CODE} ${BANG}'''contents -R''' ${CODEend} | | Contents Tree | ${CODE} ${BANG}'''contents -R''' ${CODEend} |
| Contents Sub-tree | ${CODE} ${BANG}'''contents -R'''${OPT}''nn''${OPTend}${CODEend} | | Contents Sub-tree | ${CODE} ${BANG}'''contents -R'''${OPT}''nn''${OPTend}${CODEend} |
| Contents List - Graceful | ${CODE} ${BANG}'''contents -g''' ${CODEend} | | Contents List - Graceful | ${CODE} ${BANG}'''contents -g''' ${CODEend} |

View File

@ -55,7 +55,7 @@ Note the ''list'' function simply builds an !-ArrayList-! from it's arguments.
The first thing to notice is the ''Query:'' in the first cell of the table. This tells the Slim table processor that this is a query table. Next notice the constructor argument. (See ConstructorArguments). The column headers are ''field names''. The fixture class must have a ''query'' method that returns a list of rows. Each row is a list of fields. Each field is a two-element list composed of the ''field name'' and it's string value. The first thing to notice is the ''Query:'' in the first cell of the table. This tells the Slim table processor that this is a query table. Next notice the constructor argument. (See ConstructorArguments). The column headers are ''field names''. The fixture class must have a ''query'' method that returns a list of rows. Each row is a list of fields. Each field is a two-element list composed of the ''field name'' and it's string value.
Each row in the table is checked to see if there is a match in the query response. The fields are matched left to right. If the leftmost field matches, then the row is considered to be "found". Fields that don't matche are marked in error as in the 10-Oct-1974 field above. A cell that is left blank in the table will be filled in from the result and counted as ignored. If the first cell of a row cannot be matched, then the row is considered ''missing''. If there is an unmatched row remaining in the query response, it is added to the table and marked ''surplus''. The order of the rows is irrelevant. Each row in the table is checked to see if there is a match in the query response. The fields are matched left to right. If the leftmost field matches, then the row is considered to be "found". Fields that don't match are marked in error as in the 10-Oct-1974 field above. A cell that is left blank in the table will be filled in from the result and counted as ignored. If the first cell of a row cannot be matched, then the row is considered ''missing''. If there is an unmatched row remaining in the query response, it is added to the table and marked ''surplus''. The order of the rows is irrelevant.
If a !style_code(table) method is declared in the fixture it will be called before the !style_code(query) function is called. It will be passed a list of rows which are themselves lists of cells. The rows and cells represent the all but the first row of the table. This is the same format at the !style_code(doTable) method of Table table, and the !style_code(table) method of Decision table. If a !style_code(table) method is declared in the fixture it will be called before the !style_code(query) function is called. It will be passed a list of rows which are themselves lists of cells. The rows and cells represent the all but the first row of the table. This is the same format at the !style_code(doTable) method of Table table, and the !style_code(table) method of Decision table.

View File

@ -34,7 +34,7 @@ FitNesse started as an HTML and [[wiki][http://wiki.org/wiki.cgi?WhatIsWiki]] "f
!*** From the [[Fit website][http://fit.c2.com/]]: !*** From the [[Fit website][http://fit.c2.com/]]:
Great software requires collaboration and communication.Fitis a tool for enhancing collaboration in software development. It's an invaluable way to collaborate on complicated problems -and get them right- early in development. Great software requires collaboration and communication.Fit is a tool for enhancing collaboration in software development. It's an invaluable way to collaborate on complicated problems -and get them right- early in development.
Fit allows customers, testers, and programmers to learn what their software ''should'' do and what it ''does'' do. It automatically compares customers' expectations to actual results. Fit allows customers, testers, and programmers to learn what their software ''should'' do and what it ''does'' do. It automatically compares customers' expectations to actual results.

View File

@ -0,0 +1,16 @@
!1 Get more out of !-FitNesse-!
!3 Add Plugins to your installation and extend !-FitNesse-! with additional great features.
* Suport for other programming languages
* Additional table types to express your tests and requirements in other ways
* Additional Wiki Markup commands
* Fixture frameworks you can use
* and more ...
See [[All Available Plugins][http://fitnesse.org/PlugIns?getPage&FitnesseVersion=${FITNESSE_VERSION}]] for a list of all available extensions.
Read [[Writing Plugins][FitNesse.UserGuide.AdministeringFitNesse.WritingPlugins]] to understand how to install them or write your ownn.
Below is the list of all installed plugins in this system:
!contents -R1 -g -p -f -h

View File

@ -0,0 +1,11 @@
<?xml version="1.0"?>
<properties>
<Edit>true</Edit>
<Files>true</Files>
<Properties>true</Properties>
<RecentChanges>true</RecentChanges>
<Refactor>true</Refactor>
<Search>true</Search>
<Versions>true</Versions>
<WhereUsed>true</WhereUsed>
</properties>

View File

@ -0,0 +1 @@
!contents

View File

@ -1,3 +1,3 @@
##FitNesse properties ##FitNesse properties
#Wed Feb 22 14:13:17 EST 2017 #Fri Aug 17 19:37:52 EDT 2018
Version=v20161106 Version=v20180127

View File

@ -0,0 +1,11 @@
<?xml version="1.0"?>
<properties>
<Edit>true</Edit>
<Files>true</Files>
<Properties>true</Properties>
<RecentChanges>true</RecentChanges>
<Refactor>true</Refactor>
<Search>true</Search>
<Versions>true</Versions>
<WhereUsed>true</WhereUsed>
</properties>

Binary file not shown.