From c55bb215017b706ababc49664e4ee859566137bf Mon Sep 17 00:00:00 2001 From: Mike Cifelli Date: Wed, 22 Feb 2017 14:33:36 -0500 Subject: [PATCH] Added the FitNesse wiki and a simple acceptance test --- .gitignore | 1 + .../ComponentsAndLicenses/content.txt | 10 + .../ComponentsAndLicenses/properties.xml | 11 + .../FitNesse/FullReferenceGuide/content.txt | 3 + .../FullReferenceGuide/properties.xml | 16 + .../FitNesse/ReleaseNotes/content.txt | 298 ++ .../FitNesse/ReleaseNotes/properties.xml | 11 + .../AcceptanceTestPage/ChildOne/content.txt | 1 + .../ChildOne/properties.xml | 7 + .../content.txt | 3 + .../properties.xml | 7 + .../content.txt | 3 + .../properties.xml | 7 + .../content.txt | 1 + .../properties.xml | 7 + .../content.txt | 3 + .../properties.xml | 7 + .../IncludedPage/content.txt | 1 + .../IncludedPage/properties.xml | 7 + .../ChildIncludingPage/content.txt | 2 + .../ChildIncludingPage/properties.xml | 7 + .../IncludingPage/content.txt | 2 + .../IncludingPage/properties.xml | 7 + .../AcceptanceTestPage/content.txt | 10 + .../AcceptanceTestPage/properties.xml | 7 + .../FixtureList/content.txt | 0 .../FixtureList/properties.xml | 7 + .../PageFooter/content.txt | 1 + .../PageFooter/properties.xml | 12 + .../PageHeader/content.txt | 0 .../PageHeader/properties.xml | 10 + .../ScenarioLibrary/content.txt | 168 + .../ScenarioLibrary/properties.xml | 13 + .../SuiteAcceptanceTests/SetUp/content.txt | 4 + .../SuiteAcceptanceTests/SetUp/properties.xml | 13 + .../AlwaysSecureOperation/content.txt | 14 + .../AlwaysSecureOperation/properties.xml | 12 + .../ScenarioLibrary/content.txt | 52 + .../ScenarioLibrary/properties.xml | 11 + .../SecureReadOperations/content.txt | 24 + .../SecureReadOperations/properties.xml | 12 + .../SecureTestOperations/content.txt | 16 + .../SecureTestOperations/properties.xml | 12 + .../SecureWriteOperations/content.txt | 12 + .../SecureWriteOperations/properties.xml | 12 + .../SetUp/content.txt | 9 + .../SetUp/properties.xml | 11 + .../TestInsecureReadPage/content.txt | 8 + .../TestInsecureReadPage/properties.xml | 12 + .../TestReadChildOfSecurePage/content.txt | 8 + .../TestReadChildOfSecurePage/properties.xml | 12 + .../TestSecureFilesAccess/content.txt | 11 + .../TestSecureFilesAccess/properties.xml | 12 + .../TestSecureSuitePage/content.txt | 22 + .../TestSecureSuitePage/properties.xml | 11 + .../TestSecureTestPage/content.txt | 22 + .../TestSecureTestPage/properties.xml | 12 + .../SuiteAuthenticationTests/content.txt | 5 + .../SuiteAuthenticationTests/properties.xml | 14 + .../ScenarioLibrary/content.txt | 33 + .../ScenarioLibrary/properties.xml | 11 + .../SuiteEditResponderTests/SetUp/content.txt | 6 + .../SetUp/properties.xml | 11 + .../TestEditExistingPage/content.txt | 13 + .../TestEditExistingPage/properties.xml | 15 + .../TestEditNewPage/content.txt | 9 + .../TestEditNewPage/properties.xml | 15 + .../TestUnicodeCharacters/content.txt | 3 + .../TestUnicodeCharacters/properties.xml | 16 + .../TestUserNameInProperties/content.txt | 10 + .../TestUserNameInProperties/properties.xml | 14 + .../TestUserNameInRecentChanges/content.txt | 6 + .../properties.xml | 14 + .../TestUserNameInVersions/content.txt | 7 + .../TestUserNameInVersions/properties.xml | 14 + .../TestUserNameSaved/content.txt | 7 + .../TestUserNameSaved/properties.xml | 14 + .../SuiteEditResponderTests/content.txt | 3 + .../SuiteEditResponderTests/properties.xml | 16 + .../CopyAndAppendLastRow/content.txt | 12 + .../CopyAndAppendLastRow/properties.xml | 13 + .../content.txt | 12 + .../properties.xml | 13 + .../IncrementColumnsValues/content.txt | 42 + .../IncrementColumnsValues/properties.xml | 13 + .../MaxTimeDivision/content.txt | 20 + .../MaxTimeDivision/properties.xml | 13 + .../MultipleDivision/content.txt | 15 + .../MultipleDivision/properties.xml | 13 + .../SuiteFitDecoratorTests/SetUp/content.txt | 4 + .../SetUp/properties.xml | 14 + .../TearDown/content.txt | 1 + .../TearDown/properties.xml | 14 + .../TimeRangeDivision/content.txt | 19 + .../TimeRangeDivision/properties.xml | 13 + .../TimedMultipleDivision/content.txt | 12 + .../TimedMultipleDivision/properties.xml | 13 + .../SuiteFitDecoratorTests/content.txt | 17 + .../SuiteFitDecoratorTests/properties.xml | 12 + .../TestArraysInColumnFixture/content.txt | 16 + .../TestArraysInColumnFixture/properties.xml | 12 + .../TestMissingField/content.txt | 26 + .../TestMissingField/properties.xml | 11 + .../TestMissingMethod/content.txt | 34 + .../TestMissingMethod/properties.xml | 11 + .../TestSaveAndRecallSymbol/content.txt | 41 + .../TestSaveAndRecallSymbol/properties.xml | 14 + .../SuiteColumnFixtureSpec/content.txt | 5 + .../SuiteColumnFixtureSpec/properties.xml | 12 + .../TestBlankAndNullCells/content.txt | 21 + .../TestBlankAndNullCells/properties.xml | 12 + .../content.txt | 25 + .../properties.xml | 17 + .../TestFixtureNotFound/content.txt | 26 + .../TestFixtureNotFound/properties.xml | 11 + .../content.txt | 26 + .../properties.xml | 11 + .../TestNoDefaultConstructor/content.txt | 22 + .../TestNoDefaultConstructor/properties.xml | 17 + .../TestNotFixture/content.txt | 22 + .../TestNotFixture/properties.xml | 17 + .../TestParsingOfObjects/content.txt | 45 + .../TestParsingOfObjects/properties.xml | 14 + .../TestTackOnFixtureNotFixture/content.txt | 22 + .../properties.xml | 17 + .../SuiteGeneralFixtureSpec/content.txt | 8 + .../SuiteGeneralFixtureSpec/properties.xml | 15 + .../TestBasicRowFixture/content.txt | 9 + .../TestBasicRowFixture/properties.xml | 12 + .../SuiteRowFixtureSpec/content.txt | 1 + .../SuiteRowFixtureSpec/properties.xml | 12 + .../SuiteFixtureTests/content.txt | 4 + .../SuiteFixtureTests/properties.xml | 12 + .../AddChildToNonExistentPageTest/content.txt | 3 + .../properties.xml | 12 + .../AddDefaultWithNameOfSuiteTest/content.txt | 4 + .../properties.xml | 12 + .../AddDefaultWithNameOfTestTest/content.txt | 4 + .../properties.xml | 12 + .../AddInvalidChildNameTest/content.txt | 3 + .../AddInvalidChildNameTest/properties.xml | 12 + .../AddNormalWithNameOfSuiteTest/content.txt | 5 + .../properties.xml | 12 + .../AddNormalWithNameOfTestTest/content.txt | 5 + .../properties.xml | 12 + .../AddSimpleChildPageTest/content.txt | 4 + .../AddSimpleChildPageTest/properties.xml | 12 + .../AddSuitePageTest/content.txt | 6 + .../AddSuitePageTest/properties.xml | 12 + .../AddTestPageTest/content.txt | 6 + .../AddTestPageTest/properties.xml | 12 + .../CantAddChildWithNoNameTest/content.txt | 3 + .../CantAddChildWithNoNameTest/properties.xml | 12 + .../ScenarioLibrary/content.txt | 17 + .../ScenarioLibrary/properties.xml | 11 + .../AddChildResponderSuite/SetUp/content.txt | 4 + .../SetUp/properties.xml | 11 + .../AddChildResponderSuite/content.txt | 3 + .../AddChildResponderSuite/properties.xml | 12 + .../TestFileSectionOrder/content.txt | 47 + .../TestFileSectionOrder/properties.xml | 14 + .../SuiteFileSection/content.txt | 2 + .../SuiteFileSection/properties.xml | 14 + .../TestCantMovePageBeneathSelf/content.txt | 42 + .../properties.xml | 14 + .../TestMoveIncludedPage/content.txt | 34 + .../TestMoveIncludedPage/properties.xml | 14 + .../TestMovePageInsideItself/content.txt | 21 + .../TestMovePageInsideItself/properties.xml | 14 + .../TestMovePageThreeLevelsDown/content.txt | 40 + .../properties.xml | 16 + .../content.txt | 27 + .../properties.xml | 14 + .../content.txt | 47 + .../properties.xml | 16 + .../content.txt | 24 + .../properties.xml | 12 + .../content.txt | 27 + .../properties.xml | 14 + .../TestMovePageWithSubPages/content.txt | 45 + .../TestMovePageWithSubPages/properties.xml | 16 + .../TestMovePageWithSymlinks/content.txt | 40 + .../TestMovePageWithSymlinks/properties.xml | 12 + .../TestMoveToNonExistentPage/content.txt | 29 + .../TestMoveToNonExistentPage/properties.xml | 14 + .../content.txt | 41 + .../properties.xml | 16 + .../TestSimpleMove/content.txt | 34 + .../TestSimpleMove/properties.xml | 16 + .../SuiteMoveResponder/content.txt | 5 + .../SuiteMoveResponder/properties.xml | 12 + .../content.txt | 46 + .../properties.xml | 14 + .../SuitePropertiesResponder/content.txt | 1 + .../SuitePropertiesResponder/properties.xml | 12 + .../content.txt | 42 + .../properties.xml | 16 + .../content.txt | 29 + .../properties.xml | 15 + .../content.txt | 41 + .../properties.xml | 15 + .../TestRenameDoesNotMove/content.txt | 33 + .../TestRenameDoesNotMove/properties.xml | 16 + .../TestRenameMovesChildPages/content.txt | 27 + .../TestRenameMovesChildPages/properties.xml | 16 + .../content.txt | 33 + .../properties.xml | 14 + .../content.txt | 29 + .../properties.xml | 15 + .../content.txt | 28 + .../properties.xml | 15 + .../content.txt | 29 + .../properties.xml | 15 + .../content.txt | 47 + .../properties.xml | 14 + .../content.txt | 31 + .../properties.xml | 15 + .../content.txt | 30 + .../properties.xml | 14 + .../TestRenameSymbolicPage/content.txt | 32 + .../TestRenameSymbolicPage/properties.xml | 12 + .../SuiteRenameResponder/content.txt | 5 + .../SuiteRenameResponder/properties.xml | 11 + .../ScenarioLibrary/content.txt | 22 + .../ScenarioLibrary/properties.xml | 11 + .../SuiteReplaceResponder/SetUp/content.txt | 6 + .../SetUp/properties.xml | 11 + .../content.txt | 17 + .../properties.xml | 9 + .../content.txt | 8 + .../properties.xml | 9 + .../TestReplacesContent/content.txt | 8 + .../TestReplacesContent/properties.xml | 9 + .../SuiteReplaceResponder/content.txt | 8 + .../SuiteReplaceResponder/properties.xml | 9 + .../TestLinearClassPath/content.txt | 26 + .../TestLinearClassPath/properties.xml | 11 + .../SuiteRunResponder/content.txt | 3 + .../SuiteRunResponder/properties.xml | 8 + .../SamplePages/content.txt | 7 + .../SamplePages/properties.xml | 7 + .../TestContentSearch/content.txt | 57 + .../TestContentSearch/properties.xml | 9 + .../TestSearchForm/content.txt | 21 + .../TestSearchForm/properties.xml | 13 + .../TestTitleSearch/content.txt | 56 + .../TestTitleSearch/properties.xml | 9 + .../SuiteSearchResponder/content.txt | 11 + .../SuiteSearchResponder/properties.xml | 7 + .../DoTest/content.txt | 23 + .../DoTest/properties.xml | 6 + .../TestErrorOccurred/content.txt | 7 + .../TestErrorOccurred/properties.xml | 11 + .../TestExecutedOk/content.txt | 7 + .../TestExecutedOk/properties.xml | 7 + .../SuiteExecutionStatusMessages/content.txt | 6 + .../properties.xml | 8 + .../content.txt | 6 + .../properties.xml | 12 + .../content.txt | 45 + .../properties.xml | 12 + .../SuiteResponder/SetUp/content.txt | 3 + .../SuiteResponder/SetUp/properties.xml | 13 + .../content.txt | 56 + .../properties.xml | 12 + .../TestExecutionStatusBox/content.txt | 34 + .../TestExecutionStatusBox/properties.xml | 13 + .../SuiteResponder/TestFirstTest/content.txt | 52 + .../TestFirstTest/properties.xml | 11 + .../TestNotSuiteFilter/content.txt | 53 + .../TestNotSuiteFilter/properties.xml | 12 + .../SuiteResponder/TestOneSubPage/content.txt | 47 + .../TestOneSubPage/properties.xml | 11 + .../TestPrunedPageIsExcluded/content.txt | 54 + .../TestPrunedPageIsExcluded/properties.xml | 14 + .../TestRunTestsMatchingAllTags/content.txt | 53 + .../properties.xml | 12 + .../content.txt | 53 + .../properties.xml | 12 + .../TestSuiteFilter/content.txt | 159 + .../TestSuiteFilter/properties.xml | 12 + .../content.txt | 65 + .../properties.xml | 12 + .../TestSuiteWithOneXrefWidget/content.txt | 55 + .../TestSuiteWithOneXrefWidget/properties.xml | 11 + .../content.txt | 65 + .../properties.xml | 12 + .../TestTwoSubPages/content.txt | 51 + .../TestTwoSubPages/properties.xml | 11 + .../SuiteResponder/content.txt | 2 + .../SuiteResponder/properties.xml | 15 + .../SuiteSetUp/content.txt | 1 + .../SuiteSetUp/properties.xml | 14 + .../SuiteTearDown/content.txt | 1 + .../SuiteTearDown/properties.xml | 11 + .../TestSetUpAndTearDown/content.txt | 63 + .../TestSetUpAndTearDown/properties.xml | 10 + .../content.txt | 23 + .../properties.xml | 15 + .../content.txt | 38 + .../properties.xml | 13 + .../TestSetUpAndTearDownAreHidden/content.txt | 23 + .../properties.xml | 10 + .../content.txt | 36 + .../properties.xml | 15 + .../content.txt | 23 + .../properties.xml | 13 + .../SuiteSetUpAndTearDown/content.txt | 7 + .../SuiteSetUpAndTearDown/properties.xml | 8 + .../TestPathIsIncluded/content.txt | 6 + .../TestPathIsIncluded/properties.xml | 14 + .../TestResponder/content.txt | 41 + .../TestResponder/properties.xml | 11 + .../TestStatusBox/content.txt | 26 + .../TestStatusBox/properties.xml | 13 + .../SuiteTestResponders/content.txt | 4 + .../SuiteTestResponders/properties.xml | 15 + .../TestUsenameInVersionList/content.txt | 27 + .../TestUsenameInVersionList/properties.xml | 14 + .../TestVersionsInPage/content.txt | 36 + .../TestVersionsInPage/properties.xml | 12 + .../SuiteVersionResponder/content.txt | 2 + .../SuiteVersionResponder/properties.xml | 13 + .../TestNameResponder/content.txt | 93 + .../TestNameResponder/properties.xml | 12 + .../TestPacketResponder/content.txt | 31 + .../TestPacketResponder/properties.xml | 14 + .../TestRssResponder/content.txt | 32 + .../TestRssResponder/properties.xml | 13 + .../TestShutdown/content.txt | 17 + .../TestShutdown/properties.xml | 13 + .../SuiteResponderTests/content.txt | 4 + .../SuiteResponderTests/properties.xml | 16 + .../ComparatorsAreSupported/content.txt | 16 + .../ComparatorsAreSupported/properties.xml | 12 + .../HowtoIgnoreResultValues/content.txt | 8 + .../HowtoIgnoreResultValues/properties.xml | 12 + .../TearDown/content.txt | 3 + .../TearDown/properties.xml | 11 + .../content.txt | 30 + .../properties.xml | 14 + .../ScenariosAreSupported/content.txt | 30 + .../ScenariosAreSupported/properties.xml | 13 + .../TestPage/content.txt | 23 + .../TestPage/properties.xml | 6 + .../TestFailuresAreMarked/content.txt | 48 + .../TestFailuresAreMarked/properties.xml | 12 + .../BaseLineDecisionTable/content.txt | 79 + .../BaseLineDecisionTable/properties.xml | 12 + .../SuiteSlimTests/ChainTest/content.txt | 33 + .../SuiteSlimTests/ChainTest/properties.xml | 12 + .../ChainWithInstanceTest/content.txt | 45 + .../ChainWithInstanceTest/properties.xml | 12 + .../DefineAliasInPluginTest/content.txt | 20 + .../DefineAliasInPluginTest/properties.xml | 12 + .../DefineAliasTest/content.txt | 4 + .../DefineAliasTest/properties.xml | 12 + .../DefineTableTypeTest/content.txt | 16 + .../DefineTableTypeTest/properties.xml | 12 + .../SuiteSlimTests/ErikPragtBug/content.txt | 8 + .../ErikPragtBug/properties.xml | 14 + .../HashTableWithHtmlContent/content.txt | 9 + .../HashTableWithHtmlContent/properties.xml | 12 + .../content.txt | 4 + .../properties.xml | 12 + .../ShouldReturnHashTable/content.txt | 3 + .../ShouldReturnHashTable/properties.xml | 12 + .../SuiteSlimTests/HashTableTests/content.txt | 1 + .../HashTableTests/properties.xml | 12 + .../content.txt | 34 + .../properties.xml | 12 + .../MethodExtractorRuleTest/content.txt | 103 + .../MethodExtractorRuleTest/properties.xml | 12 + .../HybridDecisionTable/SetUp/content.txt | 7 + .../HybridDecisionTable/SetUp/properties.xml | 11 + .../HybridDecisionTable/TearDown/content.txt | 3 + .../TearDown/properties.xml | 13 + .../HybridDecisionTable/content.txt | 114 + .../HybridDecisionTable/properties.xml | 12 + .../TestPage/content.txt | 17 + .../TestPage/properties.xml | 14 + .../IgnoredTestsShouldColorGray/content.txt | 34 + .../properties.xml | 12 + .../content.txt | 35 + .../properties.xml | 13 + .../content.txt | 15 + .../properties.xml | 12 + .../LibraryInSetUpAndPageTest/content.txt | 8 + .../LibraryInSetUpAndPageTest/properties.xml | 12 + .../LibraryInSetUpTest/content.txt | 4 + .../LibraryInSetUpTest/properties.xml | 12 + .../LibraryInSetUpSuite/SetUp/content.txt | 4 + .../LibraryInSetUpSuite/SetUp/properties.xml | 11 + .../LibraryInSetUpSuite/content.txt | 1 + .../LibraryInSetUpSuite/properties.xml | 12 + .../LibrarySuite/OneLibraryTest/content.txt | 10 + .../OneLibraryTest/properties.xml | 12 + .../LibrarySuite/ScenarioLibrary/content.txt | 30 + .../ScenarioLibrary/properties.xml | 11 + .../LibrarySuite/SetUp/content.txt | 5 + .../LibrarySuite/SetUp/properties.xml | 11 + .../SuiteSlimTests/LibrarySuite/content.txt | 1 + .../LibrarySuite/properties.xml | 12 + .../MultiByteCharsInSlim/content.txt | 8 + .../MultiByteCharsInSlim/properties.xml | 14 + .../ParameterizedScenarios/content.txt | 57 + .../ParameterizedScenarios/properties.xml | 13 + .../SetContextValue/content.txt | 14 + .../SetContextValue/properties.xml | 12 + .../QueryTableSuite/TestMatching/content.txt | 42 + .../TestMatching/properties.xml | 12 + .../QueryTableSuite/content.txt | 1 + .../QueryTableSuite/properties.xml | 12 + .../RegularExpressionMatching/content.txt | 8 + .../RegularExpressionMatching/properties.xml | 12 + .../content.txt | 17 + .../properties.xml | 12 + .../content.txt | 4 + .../properties.xml | 14 + .../content.txt | 4 + .../properties.xml | 6 + .../content.txt | 5 + .../properties.xml | 14 + .../content.txt | 13 + .../properties.xml | 14 + .../content.txt | 6 + .../properties.xml | 14 + .../ScenarioLibrary/content.txt | 8 + .../ScenarioLibrary/properties.xml | 11 + .../ScenarioLibrary/content.txt | 5 + .../ScenarioLibrary/properties.xml | 11 + .../ScenarioLibrary/content.txt | 2 + .../ScenarioLibrary/properties.xml | 11 + .../ScenarioLibraryOrderIsCorrect/content.txt | 7 + .../properties.xml | 14 + .../content.txt | 1 + .../properties.xml | 11 + .../ScenarioLibraryOrderSuite/content.txt | 1 + .../ScenarioLibraryOrderSuite/properties.xml | 12 + .../ScenarioLibrariesOrderTests/content.txt | 1 + .../properties.xml | 11 + .../ScenarioLibrary/IncludedPage/content.txt | 2 + .../IncludedPage/properties.xml | 13 + .../ScenarioLibrary/content.txt | 3 + .../ScenarioLibrary/properties.xml | 11 + .../content.txt | 4 + .../properties.xml | 12 + .../content.txt | 25 + .../properties.xml | 15 + .../ScenariosOnlyInSlimTests/content.txt | 7 + .../ScenariosOnlyInSlimTests/properties.xml | 14 + .../content.txt | 10 + .../properties.xml | 14 + .../ScenarioLibraryTestSuite/content.txt | 1 + .../ScenarioLibraryTestSuite/properties.xml | 12 + .../content.txt | 43 + .../properties.xml | 12 + .../content.txt | 47 + .../properties.xml | 13 + .../content.txt | 64 + .../properties.xml | 13 + .../ScenarioTestSuite/content.txt | 2 + .../ScenarioTestSuite/properties.xml | 14 + .../CalculatorRequirements/content.txt | 9 + .../CalculatorRequirements/properties.xml | 13 + .../content.txt | 29 + .../properties.xml | 13 + .../SuiteSlimTests/SetUp/content.txt | 9 + .../SuiteSlimTests/SetUp/properties.xml | 11 + .../SlimSymbols/NamingConvention/content.txt | 31 + .../NamingConvention/properties.xml | 15 + .../content.txt | 29 + .../properties.xml | 14 + .../SlimSymbolManipulation/content.txt | 66 + .../SlimSymbolManipulation/properties.xml | 12 + .../content.txt | 18 + .../properties.xml | 12 + .../SlimSymbolsCanBeBlankOrNull/content.txt | 25 + .../properties.xml | 16 + .../content.txt | 18 + .../properties.xml | 16 + .../content.txt | 21 + .../properties.xml | 12 + .../SuiteSlimTests/SlimSymbols/content.txt | 1 + .../SuiteSlimTests/SlimSymbols/properties.xml | 15 + .../SuiteSlimTests/StopSuite/content.txt | 43 + .../SuiteSlimTests/StopSuite/properties.xml | 12 + .../SuiteSlimTests/StopTest/content.txt | 42 + .../SuiteSlimTests/StopTest/properties.xml | 12 + .../SuiteSpecificationsPage/content.txt | 6 + .../SuiteSpecificationsPage/properties.xml | 12 + .../SystemExitIsPrevented/content.txt | 13 + .../SystemExitIsPrevented/properties.xml | 12 + .../SystemUnderTestTest/content.txt | 13 + .../SystemUnderTestTest/properties.xml | 14 + .../content.txt | 12 + .../properties.xml | 16 + .../SymbolsInTableTable/content.txt | 37 + .../SymbolsInTableTable/properties.xml | 13 + .../content.txt | 45 + .../properties.xml | 13 + .../TestReturnsNull/content.txt | 6 + .../TestReturnsNull/properties.xml | 12 + .../TableTableSuite/content.txt | 1 + .../TableTableSuite/properties.xml | 12 + .../TestChineseWords/content.txt | 8 + .../TestChineseWords/properties.xml | 12 + .../TestComparators/content.txt | 46 + .../TestComparators/properties.xml | 15 + .../TestCustomComparators/content.txt | 14 + .../TestCustomComparators/properties.xml | 12 + .../TestCustomConverter/content.txt | 27 + .../TestCustomConverter/properties.xml | 12 + .../TestDetailedDiff/TestPage/content.txt | 145 + .../TestDetailedDiff/TestPage/properties.xml | 13 + .../TestDetailedDiff/content.txt | 230 + .../TestDetailedDiff/properties.xml | 12 + .../TestExceptionCount/content.txt | 32 + .../TestExceptionCount/properties.xml | 12 + .../TestExceptionIsDisplayed/content.txt | 12 + .../TestExceptionIsDisplayed/properties.xml | 12 + .../TestHtmlContent/content.txt | 24 + .../TestHtmlContent/properties.xml | 12 + .../content.txt | 20 + .../properties.xml | 12 + .../IncludedPage/content.txt | 7 + .../IncludedPage/properties.xml | 14 + .../TestPageWithInclude/content.txt | 1 + .../TestPageWithInclude/properties.xml | 15 + .../TestScriptTable/content.txt | 6 + .../TestScriptTable/properties.xml | 12 + .../content.txt | 13 + .../properties.xml | 12 + .../content.txt | 59 + .../properties.xml | 12 + .../TestSubsetQuery/content.txt | 25 + .../TestSubsetQuery/properties.xml | 12 + .../content.txt | 23 + .../properties.xml | 13 + .../content.txt | 19 + .../properties.xml | 13 + .../content.txt | 21 + .../properties.xml | 13 + .../content.txt | 7 + .../properties.xml | 13 + .../NotWorking_SettingSlimTimeout/content.txt | 12 + .../properties.xml | 13 + .../content.txt | 40 + .../properties.xml | 13 + .../content.txt | 10 + .../properties.xml | 14 + .../SlimConnectionTimeout/content.txt | 16 + .../SlimConnectionTimeout/properties.xml | 12 + .../TimeoutInSlimTestSystem/content.txt | 13 + .../TimeoutInSlimTestSystem/properties.xml | 12 + .../TestSystemSlimSuite/content.txt | 2 + .../TestSystemSlimSuite/properties.xml | 15 + .../content.txt | 33 + .../properties.xml | 12 + .../content.txt | 12 + .../properties.xml | 12 + .../TestWithVariable/content.txt | 22 + .../TestWithVariable/properties.xml | 14 + .../content.txt | 9 + .../properties.xml | 14 + .../VariablesUsedInSubSubpage/content.txt | 43 + .../VariablesUsedInSubSubpage/properties.xml | 13 + .../SuiteSlimTests/content.txt | 4 + .../SuiteSlimTests/properties.xml | 15 + .../CreateAbsoluteSymbolicLink/content.txt | 14 + .../CreateAbsoluteSymbolicLink/properties.xml | 10 + .../CreateBackwardSymbolicLink/content.txt | 13 + .../CreateBackwardSymbolicLink/properties.xml | 10 + .../CreateNestedBackSymbolicLink/content.txt | 15 + .../properties.xml | 10 + .../CreateRelativeSymbolicLink/content.txt | 15 + .../CreateRelativeSymbolicLink/properties.xml | 10 + .../CreateSubPageSymbolicLink/content.txt | 12 + .../CreateSubPageSymbolicLink/properties.xml | 14 + .../content.txt | 25 + .../properties.xml | 10 + .../content.txt | 24 + .../properties.xml | 10 + .../content.txt | 24 + .../properties.xml | 10 + .../content.txt | 17 + .../properties.xml | 10 + .../content.txt | 24 + .../properties.xml | 10 + .../TestRemovingSymbolicLink/content.txt | 35 + .../TestRemovingSymbolicLink/properties.xml | 13 + .../TestRenameSymbolicLink/content.txt | 41 + .../TestRenameSymbolicLink/properties.xml | 13 + .../TestSymbolicLinkBehavior/content.txt | 24 + .../TestSymbolicLinkBehavior/properties.xml | 11 + .../SuiteSymbolicLinkTests/content.txt | 14 + .../SuiteSymbolicLinkTests/properties.xml | 12 + .../ScenarioLibrary/content.txt | 58 + .../ScenarioLibrary/properties.xml | 11 + .../SuiteTestHistory/SetUp/content.txt | 14 + .../SuiteTestHistory/SetUp/properties.xml | 11 + .../ExecutionLogOfSuitePage/content.txt | 0 .../ExecutionLogOfSuitePage/properties.xml | 4 + .../SuiteExecutionCleansUpHistory/content.txt | 60 + .../properties.xml | 9 + .../SuiteExecution/content.txt | 1 + .../SuiteExecution/properties.xml | 12 + .../ExecutionLogOfSuitePage/content.txt | 28 + .../ExecutionLogOfSuitePage/properties.xml | 14 + .../ExecutionLogOfTestPage/content.txt | 41 + .../ExecutionLogOfTestPage/properties.xml | 12 + .../SuiteExecutionLog/content.txt | 1 + .../SuiteExecutionLog/properties.xml | 14 + .../content.txt | 9 + .../properties.xml | 14 + .../content.txt | 26 + .../properties.xml | 12 + .../PageHistoryHasBreadCrumbs/content.txt | 16 + .../PageHistoryHasBreadCrumbs/properties.xml | 12 + .../content.txt | 9 + .../properties.xml | 14 + .../content.txt | 9 + .../properties.xml | 14 + .../content.txt | 9 + .../properties.xml | 14 + .../content.txt | 9 + .../properties.xml | 14 + .../content.txt | 9 + .../properties.xml | 14 + .../content.txt | 9 + .../properties.xml | 14 + .../content.txt | 9 + .../properties.xml | 14 + .../content.txt | 9 + .../properties.xml | 14 + .../PageHistoryWithOneTest/content.txt | 13 + .../PageHistoryWithOneTest/properties.xml | 14 + .../PageHistoryWithTwoTests/content.txt | 17 + .../PageHistoryWithTwoTests/properties.xml | 14 + .../SuiteTestHistoryTests/content.txt | 2 + .../SuiteTestHistoryTests/properties.xml | 12 + .../content.txt | 13 + .../properties.xml | 14 + .../content.txt | 13 + .../properties.xml | 14 + .../content.txt | 53 + .../properties.xml | 12 + .../content.txt | 18 + .../properties.xml | 14 + .../content.txt | 7 + .../properties.xml | 12 + .../SuiteTopLevelTestHistory/content.txt | 1 + .../SuiteTopLevelTestHistory/properties.xml | 12 + .../SuiteTestHistory/content.txt | 2 + .../SuiteTestHistory/properties.xml | 15 + .../content.txt | 8 + .../properties.xml | 12 + .../ClassPathWithSpace/content.txt | 10 + .../ClassPathWithSpace/properties.xml | 12 + .../content.txt | 14 + .../properties.xml | 12 + .../SuiteTestSystems/SetUp/content.txt | 5 + .../SuiteTestSystems/SetUp/properties.xml | 11 + .../TestWithCustomTestSystem/content.txt | 11 + .../TestWithCustomTestSystem/properties.xml | 12 + .../SuiteTestSystems/content.txt | 4 + .../SuiteTestSystems/properties.xml | 12 + .../DeletePage/content.txt | 7 + .../DeletePage/properties.xml | 14 + .../BusinessRequirements/NewPage/content.txt | 5 + .../NewPage/properties.xml | 13 + .../OldVersion/content.txt | 9 + .../OldVersion/properties.xml | 14 + .../BusinessRequirements/SavePage/content.txt | 7 + .../SavePage/properties.xml | 13 + .../BusinessRequirements/content.txt | 1 + .../BusinessRequirements/properties.xml | 13 + .../BusinessCase/content.txt | 7 + .../BusinessCase/properties.xml | 14 + .../ScenarioLibrary/content.txt | 35 + .../ScenarioLibrary/properties.xml | 12 + .../TearDown/content.txt | 2 + .../TearDown/properties.xml | 12 + .../ZipFileController/SetUp/content.txt | 11 + .../ZipFileController/SetUp/properties.xml | 12 + .../ZipFileController/content.txt | 10 + .../ZipFileController/properties.xml | 15 + .../SuiteVersionsControllerTests/content.txt | 15 + .../properties.xml | 12 + .../ContentsTestsInclude/content.txt | 13 + .../ContentsTestsInclude/properties.xml | 9 + .../ContentsTestsIncludeWithHelp/content.txt | 13 + .../properties.xml | 10 + .../ContentsUsage/content.txt | 16 + .../ContentsUsage/properties.xml | 8 + .../SuiteWidgetTests/SetUp/content.txt | 6 + .../SuiteWidgetTests/SetUp/properties.xml | 13 + .../SetUpLinkTest/content.txt | 5 + .../SetUpLinkTest/properties.xml | 12 + .../content.txt | 5 + .../properties.xml | 12 + .../SimpleWidgets/DavidHookersBug/content.txt | 12 + .../DavidHookersBug/properties.xml | 14 + .../SimpleWidgets/content.txt | 38 + .../SimpleWidgets/properties.xml | 15 + .../TestBackwardsSearchWidget/content.txt | 14 + .../TestBackwardsSearchWidget/properties.xml | 11 + .../TestBrokenWikiWordLink/content.txt | 8 + .../TestBrokenWikiWordLink/properties.xml | 10 + .../content.txt | 5 + .../properties.xml | 10 + .../TestClasspathPrecededByDefine/content.txt | 12 + .../properties.xml | 9 + .../TestCollapsableSections/content.txt | 91 + .../TestCollapsableSections/properties.xml | 10 + .../SuiteWidgetTests/TestComment/content.txt | 6 + .../TestComment/properties.xml | 15 + .../SuiteWidgetTests/TestContents/content.txt | 11 + .../TestContents/properties.xml | 12 + .../TestContentsFilters/content.txt | 45 + .../TestContentsFilters/properties.xml | 11 + .../TestContentsHelp/content.txt | 71 + .../TestContentsHelp/properties.xml | 15 + .../content.txt | 68 + .../properties.xml | 13 + .../TestContentsProperties/content.txt | 46 + .../TestContentsProperties/properties.xml | 11 + .../TestContentsRegraced/content.txt | 45 + .../TestContentsRegraced/properties.xml | 11 + .../TestContentsWithRecursion/content.txt | 34 + .../TestContentsWithRecursion/properties.xml | 10 + .../TestEmailWidget/content.txt | 19 + .../TestEmailWidget/properties.xml | 10 + .../TestEvaluator/content.txt | 328 ++ .../TestEvaluator/properties.xml | 9 + .../TestExistingWikiWordLink/content.txt | 65 + .../TestExistingWikiWordLink/properties.xml | 8 + .../TestExpression/content.txt | 223 + .../TestExpression/properties.xml | 11 + .../TestGtSubPageWidget/content.txt | 32 + .../TestGtSubPageWidget/properties.xml | 11 + .../TestGtSubPageWidgetInAlias/content.txt | 33 + .../TestGtSubPageWidgetInAlias/properties.xml | 11 + .../SuiteWidgetTests/TestHash/content.txt | 15 + .../SuiteWidgetTests/TestHash/properties.xml | 12 + .../SuiteWidgetTests/TestHelp/content.txt | 21 + .../SuiteWidgetTests/TestHelp/properties.xml | 12 + .../TestHttpLinkWithVariable/content.txt | 20 + .../TestHttpLinkWithVariable/properties.xml | 10 + .../TestHttpStatus/content.txt | 23 + .../TestHttpStatus/properties.xml | 9 + .../SuiteWidgetTests/TestImage/content.txt | 41 + .../SuiteWidgetTests/TestImage/properties.xml | 7 + .../SuiteWidgetTests/TestInclude/content.txt | 41 + .../TestInclude/properties.xml | 11 + .../content.txt | 33 + .../properties.xml | 9 + .../TestIncludeCollapsed/content.txt | 36 + .../TestIncludeCollapsed/properties.xml | 11 + .../TestIncludeIsCollapsable/content.txt | 32 + .../TestIncludeIsCollapsable/properties.xml | 10 + .../TestIncludeSeamless/content.txt | 45 + .../TestIncludeSeamless/properties.xml | 10 + .../content.txt | 17 + .../properties.xml | 15 + .../TestIncludeSubPage/content.txt | 32 + .../TestIncludeSubPage/properties.xml | 11 + .../TestLineBreak/content.txt | 30 + .../TestLineBreak/properties.xml | 10 + .../TestLinkAlias/content.txt | 143 + .../TestLinkAlias/properties.xml | 10 + .../TestMultiLineTable/content.txt | 41 + .../TestMultiLineTable/properties.xml | 10 + .../content.txt | 30 + .../properties.xml | 10 + .../TestNumericList/content.txt | 32 + .../TestNumericList/properties.xml | 10 + .../TestParentVariables/content.txt | 50 + .../TestParentVariables/properties.xml | 10 + .../TestRunningPageName/content.txt | 34 + .../TestSimpleList/content.txt | 32 + .../TestSimpleList/properties.xml | 10 + .../TestSimpleTable/content.txt | 34 + .../TestSimpleTable/properties.xml | 10 + .../SuiteWidgetTests/TestSubList/content.txt | 34 + .../TestSubList/properties.xml | 15 + .../TestSubPageWidget/content.txt | 30 + .../TestSubPageWidget/properties.xml | 10 + .../TestSubPageWidgetInAlias/content.txt | 30 + .../TestSubPageWidgetInAlias/properties.xml | 10 + .../TestTableColoring/content.txt | 77 + .../TestTableColoring/properties.xml | 7 + .../SuiteWidgetTests/TestTables/content.txt | 62 + .../TestTables/properties.xml | 10 + .../TestTheXrefWidget/content.txt | 68 + .../TestTheXrefWidget/properties.xml | 9 + .../SuiteWidgetTests/TestTitleTag/content.txt | 20 + .../TestTitleTag/properties.xml | 8 + .../TestVariables/content.txt | 125 + .../TestVariables/properties.xml | 10 + .../content.txt | 61 + .../properties.xml | 10 + .../TestVariablesFromUrlInput/content.txt | 55 + .../TestVariablesFromUrlInput/properties.xml | 12 + .../content.txt | 6 + .../properties.xml | 12 + .../SuiteWidgetTests/WikiPagePath/content.txt | 2 + .../WikiPagePath/properties.xml | 7 + .../WikiPageReference/content.txt | 3 + .../WikiPageReference/properties.xml | 7 + .../SuiteWidgetTests/WikiWord/content.txt | 1 + .../SuiteWidgetTests/WikiWord/properties.xml | 7 + .../SuiteWidgetTests/content.txt | 2 + .../SuiteWidgetTests/properties.xml | 10 + .../CreateSecureWiki/content.txt | 10 + .../CreateSecureWiki/properties.xml | 8 + .../ScenarioLibrary/content.txt | 21 + .../ScenarioLibrary/properties.xml | 11 + .../SuiteWikiImportTests/SetUp/content.txt | 23 + .../SuiteWikiImportTests/SetUp/properties.xml | 11 + .../TestAutomaticUpdate/content.txt | 52 + .../TestAutomaticUpdate/properties.xml | 14 + .../TestCantImportFromSecureWiki/content.txt | 18 + .../properties.xml | 15 + .../content.txt | 19 + .../properties.xml | 15 + .../TestImportingSampleWiki/content.txt | 41 + .../TestImportingSampleWiki/properties.xml | 9 + .../content.txt | 30 + .../properties.xml | 9 + .../TestOrphanedPagesAreRemoved/content.txt | 46 + .../properties.xml | 12 + .../content.txt | 22 + .../properties.xml | 15 + .../content.txt | 27 + .../properties.xml | 13 + .../content.txt | 55 + .../properties.xml | 16 + .../TestUpdatingImportedWiki/content.txt | 38 + .../TestUpdatingImportedWiki/properties.xml | 9 + .../TestWaterMarkAndEditButtons/content.txt | 11 + .../properties.xml | 14 + .../SuiteWikiImportTests/content.txt | 11 + .../SuiteWikiImportTests/properties.xml | 11 + .../TestBreadCrumbs/content.txt | 54 + .../TestBreadCrumbs/properties.xml | 13 + .../TestHeadersAndFooters/content.txt | 49 + .../TestHeadersAndFooters/properties.xml | 10 + .../TestNavigationDefault/content.txt | 25 + .../TestNavigationDefault/properties.xml | 11 + .../TestNavigationWithSuite/content.txt | 29 + .../TestNavigationWithSuite/properties.xml | 11 + .../TestNavigationWithTest/content.txt | 29 + .../TestNavigationWithTest/properties.xml | 11 + .../TestPageTags/content.txt | 79 + .../TestPageTags/properties.xml | 11 + .../SuiteWikiPageResponderTests/content.txt | 3 + .../properties.xml | 12 + .../SuiteAcceptanceTests/TearDown/content.txt | 3 + .../TearDown/properties.xml | 11 + .../FitNesse/SuiteAcceptanceTests/content.txt | 39 + .../SuiteAcceptanceTests/properties.xml | 12 + .../TestFixtures/content.txt | 3885 +++++++++++++++++ .../TestFixtures/properties.xml | 14 + .../SuiteFitAcceptanceTests/content.txt | 596 +++ .../SuiteFitAcceptanceTests/properties.xml | 14 + .../UserGuide/AcceptanceTests/content.txt | 41 + .../UserGuide/AcceptanceTests/properties.xml | 7 + .../ApplicationArchitecture/content.txt | 81 + .../ApplicationArchitecture/properties.xml | 8 + .../CommandLineArguments/content.txt | 29 + .../CommandLineArguments/properties.xml | 6 + .../ConfigurationFile/content.txt | 182 + .../ConfigurationFile/properties.xml | 9 + .../content.txt | 71 + .../properties.xml | 8 + .../LogFiles/content.txt | 29 + .../LogFiles/properties.xml | 8 + .../NetworkSecurity/content.txt | 234 + .../NetworkSecurity/properties.xml | 11 + .../PasswordCipher/content.txt | 9 + .../PasswordCipher/properties.xml | 7 + .../PasswordFile/content.txt | 25 + .../PasswordFile/properties.xml | 7 + .../JsonProperties/content.txt | 17 + .../JsonProperties/properties.xml | 11 + .../PageHistoryXml/content.txt | 19 + .../PageHistoryXml/properties.xml | 11 + .../RestfulPackets/content.txt | 33 + .../RestfulPackets/properties.xml | 13 + .../RestfulSuiteXmlFormat/content.txt | 31 + .../RestfulSuiteXmlFormat/properties.xml | 11 + .../RestfulServices/RssFeed/content.txt | 19 + .../RestfulServices/RssFeed/properties.xml | 13 + .../TestHistoryXml/content.txt | 13 + .../RestfulServices/content.txt | 128 + .../RestfulServices/properties.xml | 10 + .../SpnegoAuthentication/content.txt | 31 + .../SpnegoAuthentication/properties.xml | 8 + .../SecurityDescription/content.txt | 28 + .../SecurityDescription/properties.xml | 6 + .../SourceCodeControl/content.txt | 33 + .../SourceCodeControl/properties.xml | 11 + .../StartingAndStoppingFitNesse/content.txt | 29 + .../properties.xml | 11 + .../WikiTheming/content.txt | 53 + .../WikiTheming/properties.xml | 10 + .../WritingPlugins/content.txt | 44 + .../WritingPlugins/properties.xml | 8 + .../AdministeringFitNesse/content.txt | 2 + .../AdministeringFitNesse/properties.xml | 8 + .../DeliveringTheRightSystem/content.txt | 43 + .../DeliveringTheRightSystem/properties.xml | 9 + .../EditingFitNessePages/content.txt | 46 + .../EditingFitNessePages/properties.xml | 8 + .../ExternalHtmlPages/content.txt | 20 + .../ExternalHtmlPages/properties.xml | 11 + .../FitNesseWiki/FilesSection/content.txt | 22 + .../FitNesseWiki/FilesSection/properties.xml | 8 + .../MarkupHeaderAndFooter/content.txt | 3 + .../MarkupHeaderAndFooter/properties.xml | 6 + .../LastModificationTime/content.txt | 7 + .../LastModificationTime/properties.xml | 6 + .../LinksWithinPages/content.txt | 96 + .../LinksWithinPages/properties.xml | 7 + .../MarkupAliasLink/content.txt | 22 + .../MarkupAliasLink/properties.xml | 8 + .../MarkupBold/content.txt | 4 + .../MarkupBold/properties.xml | 7 + .../MarkupCenter/content.txt | 7 + .../MarkupCenter/properties.xml | 7 + .../MarkupCollapsableSection/content.txt | 52 + .../MarkupCollapsableSection/properties.xml | 9 + .../MarkupComments/content.txt | 11 + .../MarkupComments/properties.xml | 6 + .../MarkupContents/content.txt | 44 + .../MarkupContents/properties.xml | 8 + .../MarkupCrossReference/content.txt | 9 + .../MarkupCrossReference/properties.xml | 8 + .../MarkupEditWikiPage/content.txt | 15 + .../MarkupEditWikiPage/properties.xml | 6 + .../MarkupExpressions/content.txt | 52 + .../MarkupExpressions/properties.xml | 13 + .../MarkupExternalLink/content.txt | 9 + .../MarkupExternalLink/properties.xml | 7 + .../MarkupHashTable/content.txt | 25 + .../MarkupHashTable/properties.xml | 8 + .../MarkupHeaders/content.txt | 10 + .../MarkupHeaders/properties.xml | 7 + .../MarkupHelp/content.txt | 15 + .../MarkupHelp/properties.xml | 9 + .../MarkupHorizontalRule/content.txt | 6 + .../MarkupHorizontalRule/properties.xml | 7 + .../MarkupInternalLink/content.txt | 21 + .../MarkupInternalLink/properties.xml | 8 + .../MarkupItalics/content.txt | 4 + .../MarkupItalics/properties.xml | 6 + .../MarkupLists/content.txt | 82 + .../MarkupLists/properties.xml | 6 + .../MarkupLiteralText/content.txt | 9 + .../MarkupLiteralText/properties.xml | 10 + .../MarkupNesting/content.txt | 39 + .../MarkupNesting/properties.xml | 11 + .../MarkupNote/content.txt | 6 + .../MarkupNote/properties.xml | 9 + .../MarkupPageInclude/content.txt | 25 + .../MarkupPageInclude/properties.xml | 8 + .../MarkupPath/content.txt | 15 + .../MarkupPath/properties.xml | 9 + .../MarkupPicture/content.txt | 19 + .../MarkupPicture/properties.xml | 6 + .../MarkupPreformatted/content.txt | 23 + .../MarkupPreformatted/properties.xml | 7 + .../MarkupStrike/content.txt | 4 + .../MarkupStrike/properties.xml | 7 + .../MarkupStyle/content.txt | 27 + .../MarkupStyle/properties.xml | 13 + .../MarkupTable/content.txt | 41 + .../MarkupTable/properties.xml | 9 + .../MarkupVariables/content.txt | 82 + .../MarkupVariables/properties.xml | 11 + .../PlainTextTable/content.txt | 76 + .../PlainTextTable/properties.xml | 11 + .../TodaysDate/content.txt | 12 + .../TodaysDate/properties.xml | 10 + .../MarkupLanguageReference/content.txt | 34 + .../MarkupLanguageReference/properties.xml | 11 + .../FitNesseWiki/PageFooter/content.txt | 1 + .../FitNesseWiki/PageFooter/properties.xml | 11 + .../FitNesseWiki/PageHeader/content.txt | 0 .../FitNesseWiki/PageHeader/properties.xml | 11 + .../FitNesseWiki/PageProperties/content.txt | 36 + .../PageProperties/properties.xml | 9 + .../RefactoringWikiPages/content.txt | 5 + .../RefactoringWikiPages/properties.xml | 8 + .../FitNesseWiki/RootPage/content.txt | 1 + .../FitNesseWiki/RootPage/properties.xml | 7 + .../FitNesseWiki/ShortcutKeys/content.txt | 10 + .../FitNesseWiki/ShortcutKeys/properties.xml | 10 + .../FitNesseWiki/SubWiki/content.txt | 26 + .../FitNesseWiki/SubWiki/properties.xml | 8 + .../FitNesseWiki/SymbolicLinks/content.txt | 22 + .../FitNesseWiki/SymbolicLinks/properties.xml | 8 + .../FitNesseWiki/WhereUsed/content.txt | 1 + .../FitNesseWiki/WhereUsed/properties.xml | 7 + .../FitNesseWiki/WikiImport/content.txt | 16 + .../FitNesseWiki/WikiImport/properties.xml | 9 + .../FitNesseWiki/WikiWord/content.txt | 10 + .../FitNesseWiki/WikiWord/properties.xml | 9 + .../UserGuide/FitNesseWiki/content.txt | 22 + .../UserGuide/FitNesseWiki/properties.xml | 8 + .../ActionFixture/content.txt | 109 + .../ActionFixture/properties.xml | 14 + .../ColumnFixture/content.txt | 113 + .../ColumnFixture/properties.xml | 14 + .../ImportFixture/content.txt | 25 + .../ImportFixture/properties.xml | 14 + .../BasicFitFixtures/RowFixture/content.txt | 91 + .../RowFixture/properties.xml | 13 + .../SummaryFixture/content.txt | 7 + .../SummaryFixture/properties.xml | 14 + .../BasicFitFixtures/TableFixture/content.txt | 113 + .../TableFixture/properties.xml | 14 + .../BasicFitFixtures/content.txt | 18 + .../BasicFitFixtures/properties.xml | 14 + .../ArrayFixture/content.txt | 85 + .../ArrayFixture/properties.xml | 14 + .../CalculateFixture/content.txt | 73 + .../CalculateFixture/properties.xml | 14 + .../CombinationFixture/content.txt | 65 + .../CombinationFixture/properties.xml | 14 + .../ConstraintFixture/content.txt | 66 + .../ConstraintFixture/properties.xml | 14 + .../FitLibraryFixtures/DoFixture/content.txt | 148 + .../DoFixture/properties.xml | 14 + .../SequenceFixture/content.txt | 108 + .../SequenceFixture/properties.xml | 14 + .../FitLibraryFixtures/SetFixture/content.txt | 15 + .../SetFixture/properties.xml | 14 + .../SetUpFixture/content.txt | 92 + .../SetUpFixture/properties.xml | 14 + .../SubsetFixture/content.txt | 11 + .../SubsetFixture/properties.xml | 14 + .../FitLibraryFixtures/content.txt | 24 + .../FitLibraryFixtures/properties.xml | 14 + .../GalleryIntroduction/content.txt | 22 + .../GalleryIntroduction/properties.xml | 14 + .../FixtureArguments/content.txt | 116 + .../FixtureArguments/properties.xml | 14 + .../FixtureSymbols/content.txt | 110 + .../FixtureSymbols/properties.xml | 13 + .../ImportantConcepts/FlowMode/content.txt | 105 + .../ImportantConcepts/FlowMode/properties.xml | 14 + .../MarkupVariables/content.txt | 19 + .../MarkupVariables/properties.xml | 13 + .../SystemUnderTest/content.txt | 84 + .../SystemUnderTest/properties.xml | 14 + .../TargetObject/content.txt | 33 + .../TargetObject/properties.xml | 14 + .../ImportantConcepts/content.txt | 16 + .../ImportantConcepts/properties.xml | 14 + .../FixtureGallery/PageFooter/content.txt | 1 + .../FixtureGallery/PageFooter/properties.xml | 13 + .../FixtureGallery/SourceCode/content.txt | 239 + .../FixtureGallery/SourceCode/properties.xml | 14 + .../TableOfContents/content.txt | 2 + .../TableOfContents/properties.xml | 14 + .../UserGuide/FixtureGallery/content.txt | 11 + .../UserGuide/FixtureGallery/properties.xml | 9 + .../FitNesse/UserGuide/PageFooter/content.txt | 2 + .../UserGuide/PageFooter/properties.xml | 6 + .../ProjectDeathByRequirements/content.txt | 33 + .../ProjectDeathByRequirements/properties.xml | 7 + .../UserGuide/QuickReferenceGuide/content.txt | 326 ++ .../QuickReferenceGuide/properties.xml | 13 + .../UserGuide/TwoMinuteExample/content.txt | 99 + .../UserGuide/TwoMinuteExample/properties.xml | 15 + .../BuildOperateCheck/content.txt | 10 + .../BuildOperateCheck/properties.xml | 8 + .../CommonIncludes/content.txt | 11 + .../CommonIncludes/properties.xml | 8 + .../ParameterizedIncludes/content.txt | 16 + .../ParameterizedIncludes/properties.xml | 6 + .../SampleOperateForTest/content.txt | 5 + .../SampleOperateForTest/properties.xml | 6 + .../SampleParameterizedPage/content.txt | 8 + .../SampleParameterizedPage/properties.xml | 6 + .../SampleSetupForTest/content.txt | 5 + .../SampleSetupForTest/properties.xml | 6 + .../AcceptanceTestPatterns/content.txt | 8 + .../AcceptanceTestPatterns/properties.xml | 6 + .../content.txt | 20 + .../properties.xml | 6 + .../ClassPath/content.txt | 22 + .../ClassPath/properties.xml | 6 + .../CustomizingTestExecution/content.txt | 37 + .../CustomizingTestExecution/properties.xml | 15 + .../DebuggingFitNesseTables/content.txt | 21 + .../DebuggingFitNesseTables/properties.xml | 8 + .../DebuggingFixtureCode/content.txt | 29 + .../DebuggingFixtureCode/properties.xml | 11 + .../FitFramework/ActionFixture/content.txt | 47 + .../FitFramework/ActionFixture/properties.xml | 7 + .../ActionFixtureCode/content.txt | 26 + .../ActionFixtureCode/properties.xml | 9 + .../FitFramework/ColumnFixture/content.txt | 81 + .../FitFramework/ColumnFixture/properties.xml | 9 + .../ColumnFixtureCode/content.txt | 14 + .../ColumnFixtureCode/properties.xml | 10 + .../ColumnFixtureDesign/content.txt | 43 + .../ColumnFixtureDesign/properties.xml | 6 + .../FitFramework/CommentTables/content.txt | 12 + .../FitFramework/CommentTables/properties.xml | 7 + .../content.txt | 17 + .../properties.xml | 8 + .../DataTypesInFixtures/content.txt | 21 + .../DataTypesInFixtures/properties.xml | 6 + .../DesigningWithActionFixture/content.txt | 2 + .../DesigningWithActionFixture/properties.xml | 6 + .../DesigningWithRowFixture/content.txt | 4 + .../DesigningWithRowFixture/properties.xml | 6 + .../ExceptionsInFitTables/content.txt | 28 + .../ExceptionsInFitTables/properties.xml | 8 + .../FitFramework/FitProtocol/content.txt | 16 + .../FitFramework/FitProtocol/properties.xml | 6 + .../FitFramework/FitServer/content.txt | 4 + .../FitFramework/FitServer/properties.xml | 6 + .../FitServerProtocol/content.txt | 31 + .../FitServerProtocol/properties.xml | 6 + .../KeywordsInTestTables/content.txt | 7 + .../KeywordsInTestTables/properties.xml | 6 + .../ParametersInFixtures/content.txt | 60 + .../ParametersInFixtures/properties.xml | 7 + .../ParametricRowFixture/content.txt | 58 + .../ParametricRowFixture/properties.xml | 7 + .../FitFramework/RowEntryFixture/content.txt | 37 + .../RowEntryFixture/properties.xml | 7 + .../FitFramework/RowFixture/content.txt | 125 + .../FitFramework/RowFixture/properties.xml | 11 + .../FitFramework/RowFixtureCode/content.txt | 93 + .../RowFixtureCode/properties.xml | 9 + .../RowFixtureFunctions/content.txt | 51 + .../RowFixtureFunctions/properties.xml | 6 + .../VirtualWikiNetworkError/content.txt | 31 + .../VirtualWikiNetworkError/properties.xml | 12 + .../RowFixtureMultipleKeys/content.txt | 42 + .../RowFixtureMultipleKeys/properties.xml | 12 + .../FitFramework/SummaryFixture/content.txt | 21 + .../SummaryFixture/properties.xml | 8 + .../SymbolsInTestTables/content.txt | 19 + .../SymbolsInTestTables/properties.xml | 6 + .../FitFramework/TableFixture/content.txt | 75 + .../FitFramework/TableFixture/properties.xml | 7 + .../FitFramework/TestTableStyles/content.txt | 28 + .../TestTableStyles/properties.xml | 10 + .../VirtualWikiNetworkError/content.txt | 31 + .../VirtualWikiNetworkError/properties.xml | 12 + .../TimedActionFixture/content.txt | 23 + .../TimedActionFixture/properties.xml | 12 + .../content.txt | 5 + .../properties.xml | 6 + .../BowlingGameProject/SetUp/content.txt | 2 + .../BowlingGameProject/SetUp/properties.xml | 6 + .../SuiteGames/TestFinalScores/content.txt | 14 + .../SuiteGames/TestFinalScores/properties.xml | 9 + .../SuiteGames/TestGames/content.txt | 13 + .../SuiteGames/TestGames/properties.xml | 9 + .../TestGamesWithFancyFixture/content.txt | 13 + .../TestGamesWithFancyFixture/properties.xml | 9 + .../BowlingGameProject/SuiteGames/content.txt | 3 + .../SuiteGames/properties.xml | 9 + .../SuiteTiming/PerfectGameTiming/content.txt | 17 + .../PerfectGameTiming/properties.xml | 9 + .../TestGutterGameTiming/content.txt | 25 + .../TestGutterGameTiming/properties.xml | 9 + .../SuiteTiming/TestNoMarksTiming/content.txt | 25 + .../TestNoMarksTiming/properties.xml | 9 + .../TestSpareAndStrikeTiming/content.txt | 24 + .../TestSpareAndStrikeTiming/properties.xml | 9 + .../SuiteTiming/content.txt | 5 + .../SuiteTiming/properties.xml | 9 + .../BowlingGameProject/content.txt | 8 + .../BowlingGameProject/properties.xml | 7 + .../FitFramework/WritingFitTables/content.txt | 24 + .../WritingFitTables/properties.xml | 11 + .../FitFramework/content.txt | 13 + .../FitFramework/properties.xml | 8 + .../FixtureCode/content.txt | 162 + .../FixtureCode/properties.xml | 10 + .../GracefulName/content.txt | 27 + .../GracefulName/properties.xml | 8 + .../RestfulTests/content.txt | 68 + .../RestfulTests/properties.xml | 13 + .../RunningAcceptanceTests/content.txt | 20 + .../RunningAcceptanceTests/properties.xml | 11 + .../RunningFromJunit/content.txt | 36 + .../RunningFromJunit/properties.xml | 8 + .../RunningFromMaven/content.txt | 7 + .../RunningFromMaven/properties.xml | 8 + .../SliM/CommentTable/content.txt | 4 + .../SliM/CommentTable/properties.xml | 16 + .../SliM/ConstructorArguments/content.txt | 5 + .../SliM/ConstructorArguments/properties.xml | 13 + .../SliM/CustomTypes/content.txt | 23 + .../SliM/CustomTypes/properties.xml | 13 + .../SliM/DataTypes/content.txt | 11 + .../SliM/DataTypes/properties.xml | 13 + .../SliM/DecisionTable/content.txt | 116 + .../SliM/DecisionTable/properties.xml | 14 + .../SliM/DefineAlias/content.txt | 120 + .../SliM/DefineAlias/properties.xml | 12 + .../SliM/DefineTableType/content.txt | 16 + .../SliM/DefineTableType/properties.xml | 12 + .../SliM/DynamicDecisionTable/content.txt | 50 + .../SliM/DynamicDecisionTable/properties.xml | 12 + .../SliM/ExceptionHandling/content.txt | 9 + .../SliM/ExceptionHandling/properties.xml | 11 + .../SliM/GracefulNames/content.txt | 8 + .../SliM/GracefulNames/properties.xml | 13 + .../SliM/ImportTable/content.txt | 5 + .../SliM/ImportTable/properties.xml | 14 + .../SliM/InteractionAwareFixture/content.txt | 26 + .../InteractionAwareFixture/properties.xml | 11 + .../SliM/LibraryTable/content.txt | 44 + .../SliM/LibraryTable/properties.xml | 12 + .../SliM/OrderedQueryTable/content.txt | 12 + .../SliM/OrderedQueryTable/properties.xml | 14 + .../SliM/QueryTable/content.txt | 67 + .../SliM/QueryTable/properties.xml | 14 + .../SliM/ScenarioTable/content.txt | 146 + .../SliM/ScenarioTable/properties.xml | 14 + .../SliM/ScriptTable/content.txt | 71 + .../SliM/ScriptTable/properties.xml | 14 + .../SliM/SetUp/content.txt | 6 + .../SliM/SetUp/properties.xml | 13 + .../SlimProtocol/PortManagement/content.txt | 3 + .../PortManagement/properties.xml | 13 + .../SliM/SlimProtocol/content.txt | 156 + .../SliM/SlimProtocol/properties.xml | 11 + .../SliM/SubsetQueryTable/content.txt | 7 + .../SliM/SubsetQueryTable/properties.xml | 14 + .../SliM/SymbolsInTables/content.txt | 20 + .../SliM/SymbolsInTables/properties.xml | 14 + .../SliM/SystemUnderTest/content.txt | 51 + .../SliM/SystemUnderTest/properties.xml | 14 + .../SliM/TableTable/ReportTables/content.txt | 16 + .../TableTable/ReportTables/properties.xml | 13 + .../SliM/TableTable/content.txt | 128 + .../SliM/TableTable/properties.xml | 16 + .../SliM/ValueComparisons/content.txt | 25 + .../SliM/ValueComparisons/properties.xml | 13 + .../WritingAcceptanceTests/SliM/content.txt | 67 + .../SliM/properties.xml | 10 + .../SpecialPages/content.txt | 44 + .../SpecialPages/properties.xml | 11 + .../TestHistory/content.txt | 24 + .../TestHistory/properties.xml | 8 + .../CrossReferenceSuites/content.txt | 11 + .../CrossReferenceSuites/properties.xml | 7 + .../TestSuites/SubWikiSuites/content.txt | 22 + .../TestSuites/SubWikiSuites/properties.xml | 7 + .../TestSuites/SuiteQuery/content.txt | 22 + .../TestSuites/SuiteQuery/properties.xml | 7 + .../SuiteSetUpAndSuiteTearDown/content.txt | 6 + .../SuiteSetUpAndSuiteTearDown/properties.xml | 7 + .../TestSuites/TagsAndFilters/content.txt | 33 + .../TestSuites/TagsAndFilters/properties.xml | 7 + .../TestSuites/content.txt | 13 + .../TestSuites/properties.xml | 10 + .../TestSystems/content.txt | 7 + .../TestSystems/properties.xml | 14 + .../VariableScope/content.txt | 7 + .../VariableScope/properties.xml | 10 + .../WritingAcceptanceTests/content.txt | 93 + .../WritingAcceptanceTests/properties.xml | 11 + .../FitNesse/UserGuide/content.txt | 44 + .../FitNesse/UserGuide/properties.xml | 8 + fitnesse/FitNesseRoot/FitNesse/content.txt | 6 + fitnesse/FitNesseRoot/FitNesse/properties.xml | 7 + fitnesse/FitNesseRoot/FrontPage/content.txt | 14 + .../FitNesseRoot/FrontPage/properties.xml | 13 + fitnesse/FitNesseRoot/LispInterpreter.wiki | 7 + .../FitNesseRoot/LispInterpreter/SetUp.wiki | 5 + .../FitNesseRoot/LispInterpreter/TestOne.wiki | 9 + fitnesse/FitNesseRoot/PageFooter/content.txt | 1 + .../FitNesseRoot/PageFooter/properties.xml | 13 + fitnesse/FitNesseRoot/PageHeader/content.txt | 1 + .../FitNesseRoot/PageHeader/properties.xml | 13 + fitnesse/FitNesseRoot/RecentChanges.wiki | 4 + .../TemplateLibrary/StaticPage/content.txt | 1 + .../TemplateLibrary/StaticPage/properties.xml | 11 + .../TemplateLibrary/SuitePage/content.txt | 2 + .../TemplateLibrary/SuitePage/properties.xml | 12 + .../TemplateLibrary/TestPage/content.txt | 1 + .../TemplateLibrary/TestPage/properties.xml | 12 + .../FitNesseRoot/TemplateLibrary/content.txt | 5 + .../TemplateLibrary/properties.xml | 12 + fitnesse/FitNesseRoot/properties | 3 + 1298 files changed, 30891 insertions(+) create mode 100644 fitnesse/FitNesseRoot/FitNesse/ComponentsAndLicenses/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/ComponentsAndLicenses/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/FullReferenceGuide/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/FullReferenceGuide/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/ReleaseNotes/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/ReleaseNotes/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildOne/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildOne/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithAliasLinkToNonExistentPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithAliasLinkToNonExistentPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithAliasLinkToNonExistentSubPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithAliasLinkToNonExistentSubPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithLinkToNonExistentPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithLinkToNonExistentPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithSubPageLinkToNonExistentPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithSubPageLinkToNonExistentPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludedPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludedPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludingPage/ChildIncludingPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludingPage/ChildIncludingPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludingPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludingPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/FixtureList/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/FixtureList/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/PageFooter/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/PageFooter/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/PageHeader/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/PageHeader/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/ScenarioLibrary/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/ScenarioLibrary/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/AlwaysSecureOperation/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/AlwaysSecureOperation/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/ScenarioLibrary/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/ScenarioLibrary/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureReadOperations/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureReadOperations/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureTestOperations/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureTestOperations/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureWriteOperations/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureWriteOperations/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestInsecureReadPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestInsecureReadPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestReadChildOfSecurePage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestReadChildOfSecurePage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureFilesAccess/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureFilesAccess/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureSuitePage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureSuitePage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureTestPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureTestPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/ScenarioLibrary/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/ScenarioLibrary/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/SetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/SetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestEditExistingPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestEditExistingPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestEditNewPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestEditNewPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUnicodeCharacters/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUnicodeCharacters/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInProperties/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInProperties/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInRecentChanges/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInRecentChanges/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInVersions/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInVersions/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameSaved/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameSaved/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/CopyAndAppendLastRow/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/CopyAndAppendLastRow/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/CopyAppendLastRowAndIncrementColumnValues/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/CopyAppendLastRowAndIncrementColumnValues/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/IncrementColumnsValues/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/IncrementColumnsValues/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/MaxTimeDivision/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/MaxTimeDivision/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/MultipleDivision/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/MultipleDivision/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/SetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/SetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TearDown/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TearDown/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TimeRangeDivision/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TimeRangeDivision/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TimedMultipleDivision/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TimedMultipleDivision/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestArraysInColumnFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestArraysInColumnFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestMissingField/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestMissingField/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestMissingMethod/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestMissingMethod/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestSaveAndRecallSymbol/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestSaveAndRecallSymbol/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestBlankAndNullCells/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestBlankAndNullCells/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestCannotResolveGracefullyNamedFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestCannotResolveGracefullyNamedFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestFixtureNotFound/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestFixtureNotFound/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestFixtureNotFoundAfterTackingOnFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestFixtureNotFoundAfterTackingOnFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestNoDefaultConstructor/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestNoDefaultConstructor/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestNotFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestNotFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestParsingOfObjects/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestParsingOfObjects/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestTackOnFixtureNotFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestTackOnFixtureNotFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteRowFixtureSpec/TestBasicRowFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteRowFixtureSpec/TestBasicRowFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteRowFixtureSpec/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteRowFixtureSpec/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddChildToNonExistentPageTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddChildToNonExistentPageTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddDefaultWithNameOfSuiteTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddDefaultWithNameOfSuiteTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddDefaultWithNameOfTestTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddDefaultWithNameOfTestTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddInvalidChildNameTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddInvalidChildNameTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddNormalWithNameOfSuiteTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddNormalWithNameOfSuiteTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddNormalWithNameOfTestTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddNormalWithNameOfTestTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddSimpleChildPageTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddSimpleChildPageTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddSuitePageTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddSuitePageTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddTestPageTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddTestPageTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/CantAddChildWithNoNameTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/CantAddChildWithNoNameTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/ScenarioLibrary/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/ScenarioLibrary/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/SetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/SetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteFileSection/TestFileSectionOrder/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteFileSection/TestFileSectionOrder/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteFileSection/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteFileSection/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestCantMovePageBeneathSelf/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestCantMovePageBeneathSelf/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMoveIncludedPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMoveIncludedPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageInsideItself/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageInsideItself/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageThreeLevelsDown/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageThreeLevelsDown/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithAbsoluteInternalReference/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithAbsoluteInternalReference/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithExternalReference/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithExternalReference/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithManyLevelsOfSubPages/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithManyLevelsOfSubPages/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithRelativeInternalReference/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithRelativeInternalReference/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithSubPages/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithSubPages/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithSymlinks/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithSymlinks/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMoveToNonExistentPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMoveToNonExistentPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestReferencesOfChildOfMovedPageAreRenamed/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestReferencesOfChildOfMovedPageAreRenamed/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestSimpleMove/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestSimpleMove/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuitePropertiesResponder/TestPropertyCheckboxesArePresent/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuitePropertiesResponder/TestPropertyCheckboxesArePresent/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuitePropertiesResponder/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuitePropertiesResponder/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestProtectedWidgetsAreNotRenamed/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestProtectedWidgetsAreNotRenamed/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameChildPageWithAbsoluteReference/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameChildPageWithAbsoluteReference/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameChildPageWithSiblingReference/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameChildPageWithSiblingReference/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameDoesNotMove/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameDoesNotMove/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameMovesChildPages/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameMovesChildPages/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageThatRefersToItself/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageThatRefersToItself/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasAbsoluteReference/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasAbsoluteReference/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasLinkReference/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasLinkReference/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasSubLinkReference/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasSubLinkReference/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithBackwardsSearchReference/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithBackwardsSearchReference/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithSiblingReference/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithSiblingReference/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithSubpageReference/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithSubpageReference/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameSymbolicPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameSymbolicPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/ScenarioLibrary/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/ScenarioLibrary/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/SetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/SetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplaceContentsInPageHierarchy/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplaceContentsInPageHierarchy/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplacementWithPatternGroups/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplacementWithPatternGroups/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplacesContent/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplacesContent/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRunResponder/TestLinearClassPath/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRunResponder/TestLinearClassPath/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRunResponder/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRunResponder/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/SamplePages/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/SamplePages/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestContentSearch/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestContentSearch/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestSearchForm/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestSearchForm/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestTitleSearch/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestTitleSearch/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/DoTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/DoTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/TestErrorOccurred/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/TestErrorOccurred/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/TestExecutedOk/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/TestExecutedOk/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/DefinesFromSetupPagesShouldBeAvailableInTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/DefinesFromSetupPagesShouldBeAvailableInTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/EmptySuiteSetUpAndTearDownShouldCountAsRightPages/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/EmptySuiteSetUpAndTearDownShouldCountAsRightPages/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/SetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/SetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/SetUpAndTearDownShouldBeIncludedProperly/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/SetUpAndTearDownShouldBeIncludedProperly/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestExecutionStatusBox/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestExecutionStatusBox/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestFirstTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestFirstTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestNotSuiteFilter/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestNotSuiteFilter/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestOneSubPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestOneSubPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestPrunedPageIsExcluded/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestPrunedPageIsExcluded/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestRunTestsMatchingAllTags/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestRunTestsMatchingAllTags/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestRunTestsMatchingAllTagsWithExclusion/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestRunTestsMatchingAllTagsWithExclusion/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteFilter/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteFilter/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithAliasedXrefWidget/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithAliasedXrefWidget/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithOneXrefWidget/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithOneXrefWidget/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithSubWikiXrefWidget/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithSubWikiXrefWidget/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestTwoSubPages/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestTwoSubPages/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/SuiteSetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/SuiteSetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/SuiteTearDown/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/SuiteTearDown/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDown/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDown/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreCollapsable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreCollapsable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreCollapsableWithVariable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreCollapsableWithVariable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreHidden/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreHidden/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreUncollapsedWithVariable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreUncollapsedWithVariable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSuiteSetUpAndTearDownAreHidden/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSuiteSetUpAndTearDownAreHidden/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestPathIsIncluded/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestPathIsIncluded/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestResponder/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestResponder/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestStatusBox/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestStatusBox/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/TestUsenameInVersionList/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/TestUsenameInVersionList/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/TestVersionsInPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/TestVersionsInPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestNameResponder/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestNameResponder/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestPacketResponder/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestPacketResponder/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestRssResponder/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestRssResponder/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestShutdown/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestShutdown/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/ComparatorsAreSupported/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/ComparatorsAreSupported/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/HowtoIgnoreResultValues/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/HowtoIgnoreResultValues/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/MakingTheBaselineTableTheDefaultDecisionTable/TearDown/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/MakingTheBaselineTableTheDefaultDecisionTable/TearDown/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/MakingTheBaselineTableTheDefaultDecisionTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/MakingTheBaselineTableTheDefaultDecisionTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/ScenariosAreSupported/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/ScenariosAreSupported/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/TestFailuresAreMarked/TestPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/TestFailuresAreMarked/TestPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/TestFailuresAreMarked/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/TestFailuresAreMarked/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ChainTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ChainTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ChainWithInstanceTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ChainWithInstanceTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineAliasInPluginTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineAliasInPluginTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineAliasTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineAliasTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineTableTypeTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineTableTypeTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ErikPragtBug/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ErikPragtBug/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/HashTableWithHtmlContent/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/HashTableWithHtmlContent/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/ShouldConvertHashWidgetToHashTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/ShouldConvertHashWidgetToHashTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/ShouldReturnHashTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/ShouldReturnHashTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/ImplementDynamicDecisionTableWithHybridTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/ImplementDynamicDecisionTableWithHybridTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/MethodExtractorRuleTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/MethodExtractorRuleTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/SetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/SetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/TearDown/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/TearDown/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/IgnoredTestsShouldColorGray/TestPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/IgnoredTestsShouldColorGray/TestPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/IgnoredTestsShouldColorGray/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/IgnoredTestsShouldColorGray/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/HowToAddFixturesWithParametersToTheLibrary/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/HowToAddFixturesWithParametersToTheLibrary/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LastLibraryPreceedsEarlierLibraryTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LastLibraryPreceedsEarlierLibraryTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/LibraryInSetUpAndPageTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/LibraryInSetUpAndPageTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/LibraryInSetUpTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/LibraryInSetUpTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/SetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/SetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/OneLibraryTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/OneLibraryTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/ScenarioLibrary/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/ScenarioLibrary/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/SetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/SetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/MultiByteCharsInSlim/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/MultiByteCharsInSlim/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ParameterizedScenarios/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ParameterizedScenarios/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/SetContextValue/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/SetContextValue/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/TestMatching/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/TestMatching/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/RegularExpressionMatching/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/RegularExpressionMatching/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/BlankCellsInNestedScenariosShouldWork/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/BlankCellsInNestedScenariosShouldWork/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/BrotherScenarioLibraryIsIncluded/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/BrotherScenarioLibraryIsIncluded/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/DoesntFailIfScenariosIncludedTwice/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/DoesntFailIfScenariosIncludedTwice/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/NoScenarioSectionIfThereAreNone/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/NoScenarioSectionIfThereAreNone/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesAreIncludedInTheCorrectOrder/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesAreIncludedInTheCorrectOrder/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOnlyIncludedInTestPages/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOnlyIncludedInTestPages/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibrary/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibrary/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibrary/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibrary/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/ScenarioLibrary/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/ScenarioLibrary/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/ScenarioLibraryOrderIsCorrect/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/ScenarioLibraryOrderIsCorrect/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/ScenarioLibrary/IncludedPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/ScenarioLibrary/IncludedPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/ScenarioLibrary/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/ScenarioLibrary/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeVariables/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeVariables/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenariosOnlyInSlimTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenariosOnlyInSlimTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ShouldBeAbleToDealWithPlaceholderScenarios/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ShouldBeAbleToDealWithPlaceholderScenarios/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/ScenarioWithOutputParametersInDecisionTables/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/ScenarioWithOutputParametersInDecisionTables/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/ScenarioWithOutputParametersInScripts/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/ScenarioWithOutputParametersInScripts/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/UsingConstructorArgumentsFromDecisionTablesInScenarios/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/UsingConstructorArgumentsFromDecisionTablesInScenarios/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SegregationOfRequirementsAndImplementation/CalculatorRequirements/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SegregationOfRequirementsAndImplementation/CalculatorRequirements/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SegregationOfRequirementsAndImplementation/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SegregationOfRequirementsAndImplementation/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/NamingConvention/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/NamingConvention/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolCanHoldInstanceUsedAsParameter/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolCanHoldInstanceUsedAsParameter/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolManipulation/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolManipulation/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolShouldShowRawContents/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolShouldShowRawContents/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolsCanBeBlankOrNull/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolsCanBeBlankOrNull/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/TestCanPassSymbolsIntoConstructors/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/TestCanPassSymbolsIntoConstructors/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/TestSymbolsDontGetTurnedToStringsInTheOutput/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/TestSymbolsDontGetTurnedToStringsInTheOutput/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/StopSuite/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/StopSuite/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/StopTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/StopTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SuiteSpecificationsPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SuiteSpecificationsPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SystemExitIsPrevented/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SystemExitIsPrevented/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SystemUnderTestTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SystemUnderTestTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolAssignmentAndReferenceOfTheSameInOneTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolAssignmentAndReferenceOfTheSameInOneTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolsInTableTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolsInTableTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolsInTableTableManagedByTheFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolsInTableTableManagedByTheFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/TestReturnsNull/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/TestReturnsNull/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestChineseWords/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestChineseWords/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestComparators/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestComparators/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestCustomComparators/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestCustomComparators/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestCustomConverter/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestCustomConverter/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestDetailedDiff/TestPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestDetailedDiff/TestPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestDetailedDiff/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestDetailedDiff/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestExceptionCount/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestExceptionCount/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestExceptionIsDisplayed/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestExceptionIsDisplayed/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestHtmlContent/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestHtmlContent/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestOrderedQueryWithDuplicateRows/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestOrderedQueryWithDuplicateRows/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestPageWithInclude/IncludedPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestPageWithInclude/IncludedPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestPageWithInclude/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestPageWithInclude/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestScriptTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestScriptTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestScriptTableDisplayParameterValue/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestScriptTableDisplayParameterValue/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSequentialArgumentProcessing/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSequentialArgumentProcessing/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSubsetQuery/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSubsetQuery/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/A_TimeoutAsSlimHeaderNotReceived/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/A_TimeoutAsSlimHeaderNotReceived/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/B_TimeoutAsSlimServerDiesBeforeConnecting/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/B_TimeoutAsSlimServerDiesBeforeConnecting/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/C_TimeoutAsNoServerAtGivenSocket/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/C_TimeoutAsNoServerAtGivenSocket/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/NotWorking_SettingSlimTimeout/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/NotWorking_SettingSlimTimeout/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/PartiallyWorking_SettingSlimFlags/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/PartiallyWorking_SettingSlimFlags/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/SlimConnectionTimeout/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/SlimConnectionTimeout/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/TimeoutInSlimTestSystem/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/TimeoutInSlimTestSystem/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestTryingParameterizationIsntTooGreedy/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestTryingParameterizationIsntTooGreedy/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestTwoIdenticalTablesOnPageDontConflict/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestTwoIdenticalTablesOnPageDontConflict/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/TestWithVariable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/TestWithVariable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/VariablesRedefinedMultipleTimesOnSamePageAndUsedInSubpage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/VariablesRedefinedMultipleTimesOnSamePageAndUsedInSubpage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateAbsoluteSymbolicLink/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateAbsoluteSymbolicLink/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateBackwardSymbolicLink/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateBackwardSymbolicLink/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateNestedBackSymbolicLink/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateNestedBackSymbolicLink/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateRelativeSymbolicLink/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateRelativeSymbolicLink/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateSubPageSymbolicLink/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateSubPageSymbolicLink/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingAbsoluteSymbolicLink/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingAbsoluteSymbolicLink/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingBackwardSymbolicLink/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingBackwardSymbolicLink/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingNestedBackSymbolicLink/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingNestedBackSymbolicLink/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingRelativeSymbolicLink/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingRelativeSymbolicLink/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingSubPageSymbolicLink/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingSubPageSymbolicLink/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestRemovingSymbolicLink/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestRemovingSymbolicLink/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestRenameSymbolicLink/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestRenameSymbolicLink/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestSymbolicLinkBehavior/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestSymbolicLinkBehavior/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/ScenarioLibrary/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/ScenarioLibrary/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/ExecutionLogOfSuitePage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/ExecutionLogOfSuitePage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/SuiteExecutionCleansUpHistory/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/SuiteExecutionCleansUpHistory/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/ExecutionLogOfSuitePage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/ExecutionLogOfSuitePage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/ExecutionLogOfTestPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/ExecutionLogOfTestPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryFailCountIsSumOfFailuresAndExceptions/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryFailCountIsSumOfFailuresAndExceptions/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryForSuiteCountsTestsNotAsserts/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryForSuiteCountsTestsNotAsserts/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasBreadCrumbs/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasBreadCrumbs/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreenDateFieldIfNoErrors/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreenDateFieldIfNoErrors/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreenPassCountWhenNonZero/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreenPassCountWhenNonZero/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyDateIfNeitherPassNorFail/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyDateIfNeitherPassNorFail/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyFailureCountWhenZero/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyFailureCountWhenZero/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyPassCountWhenZero/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyPassCountWhenZero/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasRedDateFieldIfFailure/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasRedDateFieldIfFailure/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasRedFailureCountWhenNonZero/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasRedFailureCountWhenNonZero/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryLineIsLinkToTestResult/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryLineIsLinkToTestResult/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryWithOneTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryWithOneTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryWithTwoTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryWithTwoTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineIsLinkToPageHistory/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineIsLinkToPageHistory/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineResultElementsAreLinksToTestResults/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineResultElementsAreLinksToTestResults/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineShouldShowLastTwentyResults/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineShouldShowLastTwentyResults/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineShouldShowPassFailResultsInColor/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineShouldShowPassFailResultsInColor/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryShouldHaveTitle/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryShouldHaveTitle/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/CanHandleInvalidTestSystemName/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/CanHandleInvalidTestSystemName/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/ClassPathWithSpace/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/ClassPathWithSpace/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/ConnectionErrorInFitTestSystem/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/ConnectionErrorInFitTestSystem/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/SetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/SetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/TestWithCustomTestSystem/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/TestWithCustomTestSystem/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/DeletePage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/DeletePage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/NewPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/NewPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/OldVersion/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/OldVersion/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/SavePage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/SavePage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ScenarioLibrary/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ScenarioLibrary/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/TearDown/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/TearDown/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ZipFileController/SetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ZipFileController/SetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ZipFileController/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ZipFileController/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsTestsInclude/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsTestsInclude/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsTestsIncludeWithHelp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsTestsIncludeWithHelp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsUsage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsUsage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SetUpLinkTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SetUpLinkTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ShouldNotBeAbleToIncludeParentPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ShouldNotBeAbleToIncludeParentPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SimpleWidgets/DavidHookersBug/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SimpleWidgets/DavidHookersBug/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SimpleWidgets/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SimpleWidgets/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestBackwardsSearchWidget/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestBackwardsSearchWidget/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestBrokenWikiWordLink/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestBrokenWikiWordLink/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestClasspathContainingVariable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestClasspathContainingVariable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestClasspathPrecededByDefine/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestClasspathPrecededByDefine/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestCollapsableSections/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestCollapsableSections/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestComment/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestComment/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContents/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContents/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsFilters/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsFilters/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsHelp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsHelp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsHelpInsteadOfTitle/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsHelpInsteadOfTitle/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsProperties/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsProperties/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsRegraced/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsRegraced/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsWithRecursion/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsWithRecursion/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestEmailWidget/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestEmailWidget/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestEvaluator/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestEvaluator/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestExistingWikiWordLink/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestExistingWikiWordLink/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestExpression/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestExpression/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestGtSubPageWidget/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestGtSubPageWidget/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestGtSubPageWidgetInAlias/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestGtSubPageWidgetInAlias/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHash/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHash/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHelp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHelp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHttpLinkWithVariable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHttpLinkWithVariable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHttpStatus/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHttpStatus/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestImage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestImage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestInclude/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestInclude/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeBackwardsSearchPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeBackwardsSearchPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeCollapsed/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeCollapsed/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeIsCollapsable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeIsCollapsable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSeamless/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSeamless/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSetUpTearDownWithPageName/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSetUpTearDownWithPageName/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSubPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSubPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestLineBreak/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestLineBreak/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestLinkAlias/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestLinkAlias/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestMultiLineTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestMultiLineTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestNormalListWithLeadingNumbers/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestNormalListWithLeadingNumbers/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestNumericList/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestNumericList/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestParentVariables/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestParentVariables/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestRunningPageName/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSimpleList/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSimpleList/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSimpleTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSimpleTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubList/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubList/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubPageWidget/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubPageWidget/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubPageWidgetInAlias/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubPageWidgetInAlias/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTableColoring/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTableColoring/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTables/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTables/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTheXrefWidget/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTheXrefWidget/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTitleTag/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTitleTag/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariables/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariables/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesFromSystemProperties/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesFromSystemProperties/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesFromUrlInput/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesFromUrlInput/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesWithBracesBracketsAndParents/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesWithBracesBracketsAndParents/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiPagePath/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiPagePath/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiPageReference/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiPageReference/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiWord/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiWord/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/CreateSecureWiki/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/CreateSecureWiki/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/ScenarioLibrary/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/ScenarioLibrary/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/SetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/SetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestAutomaticUpdate/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestAutomaticUpdate/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestCantImportFromSecureWiki/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestCantImportFromSecureWiki/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportFromSecureWikiWithCredentials/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportFromSecureWikiWithCredentials/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportingSampleWiki/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportingSampleWiki/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportingUnicodeCharacters/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportingUnicodeCharacters/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestOrphanedPagesAreRemoved/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestOrphanedPagesAreRemoved/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestPropertiesPageHasImportForm/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestPropertiesPageHasImportForm/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestPropertiesPageHasUpdateForm/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestPropertiesPageHasUpdateForm/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestUnmodifiedPagesAreNotImported/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestUnmodifiedPagesAreNotImported/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestUpdatingImportedWiki/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestUpdatingImportedWiki/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestWaterMarkAndEditButtons/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestWaterMarkAndEditButtons/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestBreadCrumbs/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestBreadCrumbs/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestHeadersAndFooters/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestHeadersAndFooters/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationDefault/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationDefault/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationWithSuite/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationWithSuite/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationWithTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationWithTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestPageTags/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestPageTags/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/TearDown/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/TearDown/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteFitAcceptanceTests/TestFixtures/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteFitAcceptanceTests/TestFixtures/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteFitAcceptanceTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/SuiteFitAcceptanceTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AcceptanceTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AcceptanceTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/ApplicationArchitecture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/ApplicationArchitecture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/CommandLineArguments/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/CommandLineArguments/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/ConfigurationFile/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/ConfigurationFile/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/ControllingFitNesseFromTheCommandLine/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/ControllingFitNesseFromTheCommandLine/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/LogFiles/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/LogFiles/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/NetworkSecurity/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/NetworkSecurity/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/PasswordCipher/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/PasswordCipher/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/PasswordFile/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/PasswordFile/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/JsonProperties/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/JsonProperties/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/PageHistoryXml/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/PageHistoryXml/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RestfulPackets/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RestfulPackets/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RestfulSuiteXmlFormat/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RestfulSuiteXmlFormat/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RssFeed/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RssFeed/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/TestHistoryXml/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SecurityDescription/SpnegoAuthentication/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SecurityDescription/SpnegoAuthentication/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SecurityDescription/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SecurityDescription/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SourceCodeControl/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SourceCodeControl/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/StartingAndStoppingFitNesse/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/StartingAndStoppingFitNesse/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/WikiTheming/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/WikiTheming/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/WritingPlugins/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/WritingPlugins/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/DeliveringTheRightSystem/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/DeliveringTheRightSystem/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/EditingFitNessePages/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/EditingFitNessePages/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/ExternalHtmlPages/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/ExternalHtmlPages/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/FilesSection/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/FilesSection/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupHeaderAndFooter/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupHeaderAndFooter/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/LastModificationTime/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/LastModificationTime/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/LinksWithinPages/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/LinksWithinPages/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupAliasLink/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupAliasLink/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupBold/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupBold/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCenter/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCenter/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCollapsableSection/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCollapsableSection/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupComments/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupComments/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupContents/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupContents/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCrossReference/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCrossReference/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupEditWikiPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupEditWikiPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupExpressions/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupExpressions/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupExternalLink/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupExternalLink/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHashTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHashTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHeaders/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHeaders/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHelp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHelp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHorizontalRule/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHorizontalRule/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupInternalLink/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupInternalLink/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupItalics/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupItalics/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupLists/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupLists/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupLiteralText/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupLiteralText/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupNesting/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupNesting/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupNote/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupNote/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPageInclude/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPageInclude/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPath/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPath/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPicture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPicture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPreformatted/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPreformatted/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupStrike/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupStrike/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupStyle/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupStyle/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupVariables/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupVariables/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/PlainTextTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/PlainTextTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/TodaysDate/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/TodaysDate/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/PageFooter/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/PageFooter/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/PageHeader/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/PageHeader/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/PageProperties/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/PageProperties/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/RefactoringWikiPages/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/RefactoringWikiPages/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/RootPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/RootPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/ShortcutKeys/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/ShortcutKeys/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/SubWiki/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/SubWiki/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/SymbolicLinks/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/SymbolicLinks/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WhereUsed/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WhereUsed/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WikiImport/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WikiImport/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WikiWord/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WikiWord/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/ActionFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/ActionFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/ColumnFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/ColumnFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/ImportFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/ImportFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/RowFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/RowFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/SummaryFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/SummaryFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/TableFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/TableFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/ArrayFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/ArrayFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/CalculateFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/CalculateFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/CombinationFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/CombinationFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/ConstraintFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/ConstraintFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/DoFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/DoFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SequenceFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SequenceFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SetFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SetFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SetUpFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SetUpFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SubsetFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SubsetFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/GalleryIntroduction/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/GalleryIntroduction/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/FixtureArguments/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/FixtureArguments/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/FixtureSymbols/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/FixtureSymbols/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/FlowMode/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/FlowMode/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/MarkupVariables/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/MarkupVariables/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/SystemUnderTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/SystemUnderTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/TargetObject/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/TargetObject/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/PageFooter/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/PageFooter/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/SourceCode/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/SourceCode/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/TableOfContents/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/TableOfContents/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/PageFooter/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/PageFooter/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/ProjectDeathByRequirements/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/ProjectDeathByRequirements/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/QuickReferenceGuide/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/QuickReferenceGuide/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/TwoMinuteExample/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/TwoMinuteExample/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/BuildOperateCheck/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/BuildOperateCheck/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/CommonIncludes/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/CommonIncludes/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/ParameterizedIncludes/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/ParameterizedIncludes/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleOperateForTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleOperateForTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleParameterizedPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleParameterizedPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleSetupForTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleSetupForTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AttentionMessagesInTestResults/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AttentionMessagesInTestResults/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/ClassPath/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/ClassPath/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/CustomizingTestExecution/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/CustomizingTestExecution/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/DebuggingFitNesseTables/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/DebuggingFitNesseTables/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/DebuggingFixtureCode/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/DebuggingFixtureCode/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ActionFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ActionFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ActionFixtureCode/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ActionFixtureCode/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixtureCode/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixtureCode/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixtureDesign/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixtureDesign/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/CommentTables/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/CommentTables/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ComparisonExpressionsInFixtures/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ComparisonExpressionsInFixtures/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DataTypesInFixtures/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DataTypesInFixtures/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DesigningWithActionFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DesigningWithActionFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DesigningWithRowFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DesigningWithRowFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ExceptionsInFitTables/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ExceptionsInFitTables/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitProtocol/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitProtocol/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitServer/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitServer/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitServerProtocol/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitServerProtocol/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/KeywordsInTestTables/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/KeywordsInTestTables/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ParametersInFixtures/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ParametersInFixtures/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ParametricRowFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ParametricRowFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowEntryFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowEntryFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureCode/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureCode/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureFunctions/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureFunctions/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureMultipleKeys/VirtualWikiNetworkError/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureMultipleKeys/VirtualWikiNetworkError/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureMultipleKeys/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureMultipleKeys/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/SummaryFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/SummaryFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/SymbolsInTestTables/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/SymbolsInTestTables/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TableFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TableFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TestTableStyles/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TestTableStyles/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TimedActionFixture/VirtualWikiNetworkError/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TimedActionFixture/VirtualWikiNetworkError/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TimedActionFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TimedActionFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TroubleshootingAcceptanceTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TroubleshootingAcceptanceTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestFinalScores/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestFinalScores/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestGames/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestGames/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestGamesWithFancyFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestGamesWithFancyFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/PerfectGameTiming/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/PerfectGameTiming/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestGutterGameTiming/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestGutterGameTiming/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestNoMarksTiming/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestNoMarksTiming/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestSpareAndStrikeTiming/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestSpareAndStrikeTiming/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FixtureCode/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FixtureCode/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/GracefulName/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/GracefulName/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RestfulTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RestfulTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningAcceptanceTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningAcceptanceTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningFromJunit/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningFromJunit/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningFromMaven/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningFromMaven/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/CommentTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/CommentTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ConstructorArguments/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ConstructorArguments/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/CustomTypes/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/CustomTypes/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DataTypes/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DataTypes/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DecisionTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DecisionTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DefineAlias/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DefineAlias/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DefineTableType/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DefineTableType/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DynamicDecisionTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DynamicDecisionTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ExceptionHandling/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ExceptionHandling/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/GracefulNames/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/GracefulNames/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ImportTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ImportTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/InteractionAwareFixture/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/InteractionAwareFixture/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/LibraryTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/LibraryTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/OrderedQueryTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/OrderedQueryTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/QueryTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/QueryTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ScenarioTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ScenarioTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ScriptTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ScriptTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SetUp/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SetUp/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SlimProtocol/PortManagement/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SlimProtocol/PortManagement/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SlimProtocol/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SlimProtocol/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SubsetQueryTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SubsetQueryTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SymbolsInTables/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SymbolsInTables/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SystemUnderTest/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SystemUnderTest/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/TableTable/ReportTables/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/TableTable/ReportTables/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/TableTable/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/TableTable/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ValueComparisons/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ValueComparisons/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SpecialPages/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SpecialPages/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestHistory/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestHistory/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/CrossReferenceSuites/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/CrossReferenceSuites/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/SubWikiSuites/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/SubWikiSuites/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/SuiteQuery/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/SuiteQuery/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/SuiteSetUpAndSuiteTearDown/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/SuiteSetUpAndSuiteTearDown/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/TagsAndFilters/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/TagsAndFilters/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSystems/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSystems/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/VariableScope/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/VariableScope/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/UserGuide/properties.xml create mode 100644 fitnesse/FitNesseRoot/FitNesse/content.txt create mode 100644 fitnesse/FitNesseRoot/FitNesse/properties.xml create mode 100644 fitnesse/FitNesseRoot/FrontPage/content.txt create mode 100644 fitnesse/FitNesseRoot/FrontPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/LispInterpreter.wiki create mode 100644 fitnesse/FitNesseRoot/LispInterpreter/SetUp.wiki create mode 100644 fitnesse/FitNesseRoot/LispInterpreter/TestOne.wiki create mode 100644 fitnesse/FitNesseRoot/PageFooter/content.txt create mode 100644 fitnesse/FitNesseRoot/PageFooter/properties.xml create mode 100644 fitnesse/FitNesseRoot/PageHeader/content.txt create mode 100644 fitnesse/FitNesseRoot/PageHeader/properties.xml create mode 100644 fitnesse/FitNesseRoot/RecentChanges.wiki create mode 100644 fitnesse/FitNesseRoot/TemplateLibrary/StaticPage/content.txt create mode 100644 fitnesse/FitNesseRoot/TemplateLibrary/StaticPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/TemplateLibrary/SuitePage/content.txt create mode 100644 fitnesse/FitNesseRoot/TemplateLibrary/SuitePage/properties.xml create mode 100644 fitnesse/FitNesseRoot/TemplateLibrary/TestPage/content.txt create mode 100644 fitnesse/FitNesseRoot/TemplateLibrary/TestPage/properties.xml create mode 100644 fitnesse/FitNesseRoot/TemplateLibrary/content.txt create mode 100644 fitnesse/FitNesseRoot/TemplateLibrary/properties.xml create mode 100644 fitnesse/FitNesseRoot/properties diff --git a/.gitignore b/.gitignore index c553637..b778d78 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ build/ doc/ +FitNesseRoot/FitNesse/UserGuide/ fitnesse/FitNesseRoot/files jar/ *.zip diff --git a/fitnesse/FitNesseRoot/FitNesse/ComponentsAndLicenses/content.txt b/fitnesse/FitNesseRoot/FitNesse/ComponentsAndLicenses/content.txt new file mode 100644 index 0000000..f65c68c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/ComponentsAndLicenses/content.txt @@ -0,0 +1,10 @@ +!1 Components and Licenses + +Fitnesse is released under [[Common Public License version 1.0][http://opensource.org/licenses/cpl1.0.php]] + + +Also it uses some additional components which can be found in the following libraries: + +|Name |Version|Web-site |License | +|Code Mirror|4.12 |https://codemirror.net/ |MIT License| +|Jasmine |1.3.1 |http://jasmine.github.io/|MIT License| diff --git a/fitnesse/FitNesseRoot/FitNesse/ComponentsAndLicenses/properties.xml b/fitnesse/FitNesseRoot/FitNesse/ComponentsAndLicenses/properties.xml new file mode 100644 index 0000000..a16a90f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/ComponentsAndLicenses/properties.xml @@ -0,0 +1,11 @@ + + +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/FullReferenceGuide/content.txt b/fitnesse/FitNesseRoot/FitNesse/FullReferenceGuide/content.txt new file mode 100644 index 0000000..b529230 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/FullReferenceGuide/content.txt @@ -0,0 +1,3 @@ +!contents -R4 -g -p -f -h + + diff --git a/fitnesse/FitNesseRoot/FitNesse/FullReferenceGuide/properties.xml b/fitnesse/FitNesseRoot/FitNesse/FullReferenceGuide/properties.xml new file mode 100644 index 0000000..bd02373 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/FullReferenceGuide/properties.xml @@ -0,0 +1,16 @@ + + + true + true + Table of Content of the Fitnesse User Guide + true + true + true + true + + .FitNesse.UserGuide + + true + true + + diff --git a/fitnesse/FitNesseRoot/FitNesse/ReleaseNotes/content.txt b/fitnesse/FitNesseRoot/FitNesse/ReleaseNotes/content.txt new file mode 100644 index 0000000..4b14d5b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/ReleaseNotes/content.txt @@ -0,0 +1,298 @@ +!2 ${FITNESSE_VERSION} + * 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]]) + * 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) + * API changes: + * 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]]) + * 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]]) + * Issues fixed: + * 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 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]]) + +For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=15&state=closed. + +!2 20160515 + * 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]]) + * 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]]) + * 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]]) + * ''!-@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]]) + * 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]]) + * Properly handle symbol assignment in first column of a query table ([[#914][https://github.com/unclebob/fitnesse/issues/914]]) + * 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]]) + * 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]]) + * 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 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]]) + * 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. + +!2 20151230 + * Documentation updates ([[843][https://github.com/unclebob/fitnesse/pull/843]], [[833][https://github.com/unclebob/fitnesse/pull/833]], [[825][https://github.com/unclebob/fitnesse/pull/825]], [[815][https://github.com/unclebob/fitnesse/pull/815]]) + * Slim runs completely in process in when run in debug mode ([[837][https://github.com/unclebob/fitnesse/pull/837]]) + * Detailed diff for failed Slim tests ([[824][https://github.com/unclebob/fitnesse/pull/824]]) + * Git version control support is now a [[plugin][http://fitnesse.org/PlugIns]] ([[792][https://github.com/unclebob/fitnesse/pull/792]]) + * Customized !-UnauthorizedResponder-! ([[841][https://github.com/unclebob/fitnesse/pull/841]]) + * Slim query table fields are now matched left to right ([[788][https://github.com/unclebob/fitnesse/pull/788]]) + * Improved search screen ([[838][https://github.com/unclebob/fitnesse/pull/838]]) + * FitNesse now uses java.util.concurrent thread pools instead of spawning unmanaged threads ([[830][https://github.com/unclebob/fitnesse/pull/830]]) + * Execution log information is displayed when executing suites and tests with format=xml ([[816][https://github.com/unclebob/fitnesse/issues/816]]) + * Many, many code consistency fixes thanks to @hansjoachim ([[807][https://github.com/unclebob/fitnesse/pull/807]], [[808][https://github.com/unclebob/fitnesse/pull/808]], [[810][https://github.com/unclebob/fitnesse/pull/810]], [[811][https://github.com/unclebob/fitnesse/pull/811]], [[812][https://github.com/unclebob/fitnesse/pull/812]], [[817][https://github.com/unclebob/fitnesse/pull/817]], [[818][https://github.com/unclebob/fitnesse/pull/818]], [[829][https://github.com/unclebob/fitnesse/pull/829]], [[836][https://github.com/unclebob/fitnesse/pull/836]], [[840][https://github.com/unclebob/fitnesse/pull/840]]) + * Under the hood:JQueryhas been upgraded to 1.11.3 (was 1.7.2) + * Issues fixed: + * Class path issues (on windows and paths with spaces) ([[821][https://github.com/unclebob/fitnesse/pull/821]]) + * Fix issues with non-wiki words and symbolic links ([[820][https://github.com/unclebob/fitnesse/pull/820]]) + * Plain text editor fixes (find option([[793][https://github.com/unclebob/fitnesse/pull/793]], [[798][https://github.com/unclebob/fitnesse/pull/798]]) + * Fix issues with parsing UTF-8 characters ([[791][https://github.com/unclebob/fitnesse/pull/791]]) + * JUnit formatter displays run time with 3 decimal precision ([[794][https://github.com/unclebob/fitnesse/issues/794]]) + +For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=13&state=closed. + +!1 20150814 + * Syntax highlighting in plain text editor ([[631][https://github.com/unclebob/fitnesse/pull/631]]) + * Support generic behavior in Slim (Java) fixture via when fixtures implement [[!-InteractionAwareFixture-!][UserGuide.WritingAcceptanceTests.SliM.InteractionAwareFixture]] ([[724][https://github.com/unclebob/fitnesse/pull/724]]) + * Tag filtering is now all case insensitive ([[728][https://github.com/unclebob/fitnesse/pull/728]]) + * Improved slim hash table handling ([[739][https://github.com/unclebob/fitnesse/pull/739]]) + * Supportcustomformatters([[764][https://github.com/unclebob/fitnesse/pull/764]]) + * Nonwikiwordpage names are properly resolved when using !-!include-! statements + * Page-in-progress formatter has been removed ([[767][https://github.com/unclebob/fitnesse/pull/767]]) + * Issues fixed: + * NPE in !-SuiteHistoryFormatter-! ([[736][https://github.com/unclebob/fitnesse/pull/736]]) + * WYSIWYG (rich text)breaksinlinecodeintable ([[756][https://github.com/unclebob/fitnesse/pull/756]]) + * Rich text editor retains line breaks ([[756][https://github.com/unclebob/fitnesse/pull/756]], [[777][https://github.com/unclebob/fitnesse/pull/77]]) + * XML result files do no longer contain HTML output by default (as it was a few releases ago) ([[771][https://github.com/unclebob/fitnesse/pull/771]]) + +For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=12&state=closed. + +!2 20150428 + * !-!contents-! has a new [[-H option][UserGuide.FitNesseWiki.MarkupLanguageReference.MarkupContents]] ([[718][https://github.com/unclebob/fitnesse/pull/718]]) + * The JUnit runner is notified of system exceptions ([[716][https://github.com/unclebob/fitnesse/pull/716]]) + * New Slim table type: [[Alias table][UserGuide.WritingAcceptanceTests.SliM.DefineAlias]] ([[711][https://github.com/unclebob/fitnesse/pull/711]]) + * Prevention of System.exit() calls is configurable ([[707][https://github.com/unclebob/fitnesse/pull/707]]) + * Improved error reporting when running test suites from the command line ([[706][https://github.com/unclebob/fitnesse/pull/706]]) + * Relaxed Test & Page History to only secure-read permissions ([[696][https://github.com/unclebob/fitnesse/pull/696]]) + * Remove global slim timeout during testing; this issue was introduced in v20150226 ([[660][https://github.com/unclebob/fitnesse/pull/660]]) + * Expose table of symbols to [[!-TableTable-!][UserGuide.WritingAcceptanceTests.SliM.TableTable]] fixtures ([[644][https://github.com/unclebob/fitnesse/pull/644]]) + * Improve messages when Slim server crashes ([[662][https://github.com/unclebob/fitnesse/pull/662]]) + * Make the "bootstrap" theme the default ([[679][https://github.com/unclebob/fitnesse/pull/679]]) + * Relaxed Test & Page History to require only secure-read permission ([[696][https://github.com/unclebob/fitnesse/pull/696]]) + * Slim convertersproduceuserfriendlyerrors([[682][https://github.com/unclebob/fitnesse/pull/682]]) + * Documentation updates ([[668][https://github.com/unclebob/fitnesse/pull/668]], [[672][https://github.com/unclebob/fitnesse/pull/672]], [[681][https://github.com/unclebob/fitnesse/pull/681]]) + * Issues fixed: + * Fixes in file paths ([[667][https://github.com/unclebob/fitnesse/pull/667]], [[692][https://github.com/unclebob/fitnesse/pull/692]]) + * Fix issue with ''!'' in spreadsheet translation ([[678][https://github.com/unclebob/fitnesse/pull/678]]) + * Revert old behavior for Slim String converter: pass empty string for empty cells instead of ''null'' ([[687][https://github.com/unclebob/fitnesse/pull/687]]) + +For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=11&state=closed. + +!2 v20150226 + * Fixed lot's of code style issues ([[588][https://github.com/unclebob/fitnesse/pull/588]], [[618][https://github.com/unclebob/fitnesse/pull/618]], [[619][https://github.com/unclebob/fitnesse/pull/619]][[628][https://github.com/unclebob/fitnesse/pull/628]], [[632][https://github.com/unclebob/fitnesse/pull/632]], [[634][https://github.com/unclebob/fitnesse/pull/634]], [[645][https://github.com/unclebob/fitnesse/pull/645]]) + * Table coloring for Slim tables ([[569][https://github.com/unclebob/fitnesse/pull/569]]) + * Improved extensibility of Slim tables ([[620][https://github.com/unclebob/fitnesse/pull/620]]) + * Allow graceful names for Slim decision table output columns, when used in conjunction with scenario tables ([[595][https://github.com/unclebob/fitnesse/pull/595]]) + * Image support for rich text editor ([[597][https://github.com/unclebob/fitnesse/pull/597]], [[606][https://github.com/unclebob/fitnesse/pull/606]], [[611][https://github.com/unclebob/fitnesse/pull/611]], [[629][https://github.com/unclebob/fitnesse/pull/629]]) + * Hash table editing support for rich text editor ([[622][https://github.com/unclebob/fitnesse/pull/622]]) + * Rich editor icons are now SVG images ([[568][https://github.com/unclebob/fitnesse/pull/568]]) + * Improved Slim Converters ([[613][https://github.com/unclebob/fitnesse/pull/613]]) + * Test execution log is storedinpagehistory. It's no longer stored in !-ErrorLogs-! pages ([[627][https://github.com/unclebob/fitnesse/pull/627]]) + * ''?suite'' and ''?test'' responders can now automatically clean up the test history ([[636][https://github.com/unclebob/fitnesse/pull/636]]) + * Added JUnit output format for suite runs: ''?suite&format=junit'' ([[642][https://github.com/unclebob/fitnesse/pull/642]]) + * Issues fixed: + * Fixed errors that occurred when a different XML !-TransformerFactory-! was loaded ([[598][https://github.com/unclebob/fitnesse/pull/598]]) + * Fixed failure navigator in test history pages ([[580][https://github.com/unclebob/fitnesse/pull/580]]) + * Empty ''suiteFilter'' argument on ''?suite'' responder will be ignored ([[625][https://github.com/unclebob/fitnesse/pull/625]]) + * Test/Suite button is search results worksfromsub-wiki's + * Allow Symlink rename/replace on existing Symlink ([[610][https://github.com/unclebob/fitnesse/pull/610]]) + * Prevent port conflicts for Slim runner when run in-process ([[621][https://github.com/unclebob/fitnesse/pull/621]]) + +For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=10&state=closed. + +!2 20150114 + * Big cleanup. Removed classes: + * !-util.StringUtil-!, use !-org.apache.commons.lang.StringUtils-! instead. + * !-util.ListUtility-!, use java.util.Arrays instead. + * fitnesse.wikitext.Utils, use !-fitnesse.html.HtmlUtil-! instead. + * !-fitnesse.FitFilter-!. + * Page names do no longer have to follow !-WikiWord-! syntax ([[513][https://github.com/unclebob/fitnesse/pull/513]]) + * Implemented Slim !-StopSuiteException-! -stopswholesuitefrom executing + * More flexible filter definitions for JUnit runner ([[555][https://github.com/unclebob/fitnesse/pull/555]]) + * Can customize property characters used in !-!contents-! ([[541][https://github.com/unclebob/fitnesse/pull/541]]) + * Deal more nicely with Slim scenario output parameters ([[536][https://github.com/unclebob/fitnesse/pull/536]]) + * Allowforurlparametersas variables in wiki pages ([[531][https://github.com/unclebob/fitnesse/pull/531]]) + * Raise an error if a new page will override an existing page ([[459][https://github.com/unclebob/fitnesse/pull/459]]) + * Issues fixed: + * Reverted old test behavior: only the current page will be tested (previously also test sub-pages were executed) ([[538][https://github.com/unclebob/fitnesse/pull/538]]) + * Fix !-SimpleFileVersionsController-! so it can be configured in ''plugins.properties''. + * Remember Wrap and Auto-format options in Safari ([[521][https://github.com/unclebob/fitnesse/pull/521]]) + * ?properties responder is now returning more properties whenaskedforjsonoutput([[517][https://github.com/unclebob/fitnesse/pull/517]]) + +For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=9&state=closed. + +!2 20140901 + * Code cleanup for FitNesse JUnit runner ([[487][https://github.com/unclebob/fitnesse/pull/487]]). + * Improved error message when included page does not exist (([[496][https://github.com/unclebob/fitnesse/pull/496]]). + * Slim script tables can now really be addressed with ''script:MyClass'' ([[500][https://github.com/unclebob/fitnesse/pull/500]]). + * Slim can deal with arbitrary length messages ([[504][https://github.com/unclebob/fitnesse/pull/504]]) + * Plugin classes can support more elements (sub)types ([[506][https://github.com/unclebob/fitnesse/pull/506]]) + * Make Scenario tables play nice with custom script table (sub)types ([[507][https://github.com/unclebob/fitnesse/pull/507]]) + * Output parameters in a decision table have been made available in scenarios ([[510][https://github.com/unclebob/fitnesse/pull/510]]). + * Command pattern can contain quoted parameters (this helps at places where spaces are involved) ([[508][https://github.com/unclebob/fitnesse/pull/508]]). + * Via the property ''!-WikiPageFactories-!'' (plural) extra wiki page types can be supported ([[505][https://github.com/unclebob/fitnesse/pull/505]]). + * Code cleanup in the Wiki module ([[511][https://github.com/unclebob/fitnesse/pull/511]]). + * Issues fixed: + * Fixed issue when rendering stack traces on Windows with spaces in paths ([[510][https://github.com/unclebob/fitnesse/pull/510]]). + * Allow Scenarios with parameterised style but with empty parameter names ([[510][https://github.com/unclebob/fitnesse/pull/510]]). + * Fix handling and recording of errors in table definitions ([[510][https://github.com/unclebob/fitnesse/pull/510]]). + +For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=8&state=closed. + +!2 20140630 + * Add page wide Expand/Collapse All buttons (bootstrap theme). + * Performance improvements: cache big factory classes and page data. + * Issues fixed: + * Fix issue introduced in Order Query Table comparison in 20140623. + * ''!-ErrorLog-!'' was not written if test execution was interrupted. + * Include page header when executing test or suite. + * Slow page tags again (bootstrap theme). + * ''SLIM_VERSION'' variable is back: allow olderSLiMimplementations to connect. + +For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=7&state=closed. + +!2 2014-06-23 + * Author information for !-GitVersionController-!. + * ''?suite'' and ''?test'' are now the same responder. + * More useful failure message forjUnitrunner. + * Use String arrays for commands. This should avoid errors with spaces in path names. + * Improved matching for query tables. + * Plugins are now loaded relative to the FitNesse root path. + * SLIM can handle checks on Map's. + * Refactoring on wiki subsystem. + * Issues fixed: + * Support more than one level of symlinks. + * !-ErrorLog-! is written for tests ran with ''format=text'' or ''format=xml''. + * Rich Text Format horizontal scrollbar is missing. + * Failure navigator should only show in case of failures. + +For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=6&state=closed. + +!2 2014-04-18 + * Introduced new logo. + * New table type for Slim: [[Dynamic Decision table][.FitNesse.UserGuide.WritingAcceptanceTests.SliM.DynamicDecisionTable]]. + * Add ''script:'' prefix. Script tables can be defined as ''script:Fixture name''. + * Wiki server is no longer started when !-FitNesse-! is started with ''-c'' option. + * !-FitNesseRoot-! location can be changed in JUnit !-FitNesseSuite-! annotation. + * Comment columns for slim decision and query tables. + * Shortcut keys (press ''?''). + * Configurable [[Context root][.FitNesse.UserGuide.AdministeringFitNesse.ConfigurationFile]]. + * Updated the .FitNesse.UserGuide structure. + * Improved Where Used feature in the Tools menu. + * ''JAVA_HOME'' variable is now used, if set, to find the java executable for java subprocesses. + * Properties ''slim.timeout'' and ''slim.debug.timeout'' can be used to configure timeouts (start up and finish) for SLIM test runs. + * The rich text editor is now an in-page editor (does not use an iframe anymore). + * Can auto-format on save when editing a page in plain textmode. + * Issues fixed: + * ''Add'' menu should only show templates ending on ''-Page.'' + * Missing stylesheets added to JUnit test results. + * Fix representation issue with ignored field inSLim!-TableTable.-! + +For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=6&state=closed. + +!2 2014-02-01 + * '''Files outside the http://files section can no longer be accessed!''' + * Updated bootstrap theme to bootstrap 3. + * Added hooks to add custom test systems. + * Pages can now be defined in a .TemplateLibrary. You can add your own page scaffolding. + * java.util.logging is now used for logging, instead of System.out/err. + * Support for more content types (in particular image types). + * Cleanup: removed packages fitnesse.runner, fitnesse.schedule. + * Refactoring: the code is a more modular than before. This makes it easier to integrate !-FitNesse-! components in other applications. + * MakeFittestrunnerno longer dependent on the wiki running: now theFit testsystem starts it's own "socket catcher". + * The jUnit test running is starting a test runner by itself. It's no longer using !-FitNesseMain-!. + * Slim server can be kept running after test execution (-d option). + * Issues fixed: + * Unicode issues fixed. + * Stability fixes for Slim. + * Slim tables starting with "comment:" are considered comment tables. + * Bug in Fit that caused flow mode for !-FitLibrary's-! !-DoFixture-! to break. + * Bug where external HTML page suites were not displayed. + * Hash map rendering in rich text editor. + +For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?direction=desc&milestone=4&page=1&sort=updated&state=closed. + +!2 2013-11-10 + * CMSystem functionality is removed. Now only the !-VersionsController-! interface can be used. + * Git version control andrecent-changessupport + * Page caching is removed.Changesonthefilesystemarenowdirectly reflected in the wiki + * Test and Page history can show/hide passed tests. This makes it easier to search for failed test runs. + * The "names" responder has new options: "Recursive", "!-LeafOnly-!", and "!-ShowTags-!" (needs documentation update!) + * Reduce space used by includedpagesontestpage. + * Testsystem, Fit server and wiki code has been cleaned up. + * New command line option ''-f ''. Loads a custom configuration properties file. + * Code cleanup: test system, wiki and reporting (formatters) + * Settings can be configured both on the command line and in the plugins.properties file + * Updated REST API parameter for "names" request + * Issues fixed: + * HTML content is table cells is passed to the SUT as-is + * Sockets are not properly closed after Slim test execution + * !-StopTest-!behaviourchanged in version 20130530. Theoldbehaviourisin place again. + * Fixed issue where stylesheets were not properly loaded in Chrome. + * String arguments are not converted, even if a Converter is registered. + * Rich text editor improvements + +!2 2013-05-30 + * Many improvements in the JUnit test runner + * New: version comparator + * Wiki: can set image width with -w option, border with -b and margin with -m: !-!img -b 2 -m 10 -w 600 http://files/someImage.png-! + * !-FitNesse-! loads well with both fitnesse.jar and fitnesse-standalone.jar + * Virtual Wiki functionality has finally been removed + * Big refactoring ofSLiMtestsystem. Output is now XML compliant, introduction of domain classes and cachingofsetup/tear down pages + * Many fixes in the rich text editor: full-screen editing, more lenient parsing of wiki text, improved cut-and-paste + * Optimized wiki page parser performance + * Fixed issue with setting/reading the same field multiple times in aSLiMdecision table + * Stack traces fromSLiMserver are enriched with class information + +!2 2012-11-16 + * Added new Failure Navigator. Now possible to jump quickly to cells containing failures or exceptions. Works on Tests and Suites. Finds failures in collapsed sections or in scenario tables. + +!2 2012-09-18 + * Added the concept of a !-TemplateLibrary-! and the ability to insert existing templates into the plain text editor. + +!2 2012-03-20 + * '''Note:''' This page has a layoutthat's not conformprevious releases of !-FitNesse-! + * Introduced !-ReleaseNotes-! page + * Moved a lot of presentation logic to template files + * New style - The layout and style in theWIkitext is changed as well, keep this in mind when comparing test output + * Wysiwyg editor + * Parser fixes + * [[Theming system][UserGuide.WikiTheming]] + +!2 2011-10-25 + * New parser + +!2 20110923 (Dan Rollo) +maven pom.xml cleanups: + + * Remove unneeded default tags. + * Add plugin tags. + * Add explicit, platform independent UTF-8 file encoding via property: project.build.sourceEncoding + * Remove dependencyonobsoletefitlibrary(the required classes are already in the source tree). + * Replace dependency on json with the latest published json artifact. + * Remove unneeded ${basedir} from tag value. + +!2 20081128 (UB) + * Added &debug flag to TestResponderurl. This forces the test to run ''inside'' the fitnesse process. If you are running fitnesse in a debugger, you can breakpoint your fixtures. + * Symbols can be java properties or environment variables. Symbols first, env variables second, java properties third. + * If the first cell of a script table is a symbol assignment ($V=) then the rest must be a function call. The symbol is assigned the return value of the function. diff --git a/fitnesse/FitNesseRoot/FitNesse/ReleaseNotes/properties.xml b/fitnesse/FitNesseRoot/FitNesse/ReleaseNotes/properties.xml new file mode 100644 index 0000000..a16a90f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/ReleaseNotes/properties.xml @@ -0,0 +1,11 @@ + + +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildOne/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildOne/content.txt new file mode 100644 index 0000000..56410ad --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildOne/content.txt @@ -0,0 +1 @@ +The following text must be here:''You have reached Child One.'' \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildOne/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildOne/properties.xml new file mode 100644 index 0000000..431188a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildOne/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717210025 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithAliasLinkToNonExistentPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithAliasLinkToNonExistentPage/content.txt new file mode 100644 index 0000000..440ae33 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithAliasLinkToNonExistentPage/content.txt @@ -0,0 +1,3 @@ +This page has an alias widget that links to a non existent page + +[[link][NonExistentPage]] \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithAliasLinkToNonExistentPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithAliasLinkToNonExistentPage/properties.xml new file mode 100644 index 0000000..431188a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithAliasLinkToNonExistentPage/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717210025 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithAliasLinkToNonExistentSubPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithAliasLinkToNonExistentSubPage/content.txt new file mode 100644 index 0000000..789ebfd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithAliasLinkToNonExistentSubPage/content.txt @@ -0,0 +1,3 @@ +This page contains an alias link to a non existent sub page. + +[[link][^NonExistentSubPage]] \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithAliasLinkToNonExistentSubPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithAliasLinkToNonExistentSubPage/properties.xml new file mode 100644 index 0000000..431188a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithAliasLinkToNonExistentSubPage/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717210025 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithLinkToNonExistentPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithLinkToNonExistentPage/content.txt new file mode 100644 index 0000000..7a8aed7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithLinkToNonExistentPage/content.txt @@ -0,0 +1 @@ +This page: .FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.DoesNotExist. \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithLinkToNonExistentPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithLinkToNonExistentPage/properties.xml new file mode 100644 index 0000000..f2bf75b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithLinkToNonExistentPage/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717210026 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithSubPageLinkToNonExistentPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithSubPageLinkToNonExistentPage/content.txt new file mode 100644 index 0000000..6eef550 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithSubPageLinkToNonExistentPage/content.txt @@ -0,0 +1,3 @@ +This page has a link to a non existent sub page. + +.FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.ChildWithSubPageLinkToNonExistentPage.NonExistentSubPage \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithSubPageLinkToNonExistentPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithSubPageLinkToNonExistentPage/properties.xml new file mode 100644 index 0000000..f2bf75b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/ChildWithSubPageLinkToNonExistentPage/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717210026 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludedPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludedPage/content.txt new file mode 100644 index 0000000..70f8155 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludedPage/content.txt @@ -0,0 +1 @@ +the included page 00bF diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludedPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludedPage/properties.xml new file mode 100644 index 0000000..f2bf75b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludedPage/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717210026 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludingPage/ChildIncludingPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludingPage/ChildIncludingPage/content.txt new file mode 100644 index 0000000..a78f4ab --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludingPage/ChildIncludingPage/content.txt @@ -0,0 +1,2 @@ +Child Including Page +!include .FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.IncludedPage \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludingPage/ChildIncludingPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludingPage/ChildIncludingPage/properties.xml new file mode 100644 index 0000000..238512f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludingPage/ChildIncludingPage/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717210027 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludingPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludingPage/content.txt new file mode 100644 index 0000000..58a411c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludingPage/content.txt @@ -0,0 +1,2 @@ +!include .FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.IncludedPage +.FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.IncludingPage.ChildIncludingPage diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludingPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludingPage/properties.xml new file mode 100644 index 0000000..238512f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/IncludingPage/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717210027 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/content.txt new file mode 100644 index 0000000..32fb924 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/content.txt @@ -0,0 +1,10 @@ +This page is used as a target for some of the FitNesse acceptance tests. Don't delete it or any of it's children. + +.FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.ChildOne +.FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.ChildWithLinkToNonExistentPage +.FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.ChildWithSubPageLinkToNonExistentPage +.FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.ChildWithAliasLinkToNonExistentPage +.FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.ChildWithAliasLinkToNonExistentSubPage +.FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.IncludedPage +.FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.IncludingPage + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/properties.xml new file mode 100644 index 0000000..060fc5e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/AcceptanceTestPage/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717210024 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/FixtureList/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/FixtureList/content.txt new file mode 100644 index 0000000..e69de29 diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/FixtureList/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/FixtureList/properties.xml new file mode 100644 index 0000000..d13ea88 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/FixtureList/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717210028 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/PageFooter/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/PageFooter/content.txt new file mode 100644 index 0000000..91f742a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/PageFooter/content.txt @@ -0,0 +1 @@ +[[!-FitNesse's-! own acceptance test suite][.FitNesse.SuiteAcceptanceTests]] | [[Front Page][.FrontPage]] | [[User Guide][.FitNesse.UserGuide]] \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/PageFooter/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/PageFooter/properties.xml new file mode 100644 index 0000000..77b7026 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/PageFooter/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/PageHeader/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/PageHeader/content.txt new file mode 100644 index 0000000..e69de29 diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/PageHeader/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/PageHeader/properties.xml new file mode 100644 index 0000000..b967a77 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/PageHeader/properties.xml @@ -0,0 +1,10 @@ + + + + 20060717210028 + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/ScenarioLibrary/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/ScenarioLibrary/content.txt new file mode 100644 index 0000000..a2ffb46 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/ScenarioLibrary/content.txt @@ -0,0 +1,168 @@ +!|scenario|given page|page|with content|content| +|create page|@page|with content|@content| +|$IT=|echo|@page| + +!|scenario|given page|page| +|given page|@page|with content|nothing| +|$CONTENT=|echo|| + +!|scenario|given test page|page| +|given page|@page| +|make|@page|a test page| + +!|scenario|given slim test page|page| +|given page|@page|with content|!define TEST_SYSTEM {slim}| +|make|@page|a test page| + +|scenario|page|source|should have link to|target| +|check|request page|@source|200| +|ensure|content contains|[?]| + +!|scenario|it should have creating link to|target| +|page|$IT|should have creating link to|@target| + +!|scenario|page|source|should contain|text| +|check|request page|@source|200| +|ensure|content contains|@text| +|show|content| + +!|scenario|page|source|should not contain|text| +|check|request page|@source|200| +|reject|content contains|@text| +|show|content| + +!|scenario|page|source|should match|text| +|check|request page|@source|200| +|ensure|content matches|@text| +|show|content| + +!|scenario|it should contain|text| +|page|$IT|should contain|@text| + +!|scenario|it should not contain|text| +|page|$IT|should not contain|@text| + +!|scenario|it should contain|text|in line|symbol| +|check|request page|$IT|200| +|$@symbol=|line number containing|@text| + +!|scenario|it should match|text| +|page|$IT|should match|@text| + +!|scenario|test results for page|source|should contain|text| +|check|request page|@source?test|200| +|ensure|content contains|@text| +|show|content| + +!|scenario|test results for page in debug mode |source|should contain|text| +|check|request page|@source?test&debug|200| +|ensure|content contains|@text| +|show|content| + +!|scenario|test results for suite|source|should contain|text| +|check|request page|@source?suite|200| +|ensure|content contains|@text| +|show|content| + +!|scenario|its test results should contain|text| +|test results for page|$IT|should contain|@text| + +!|scenario|test ressults for page|source|should not contain|text| +|check|request page|@source?test|200| +|reject|content contains|@text| +|show|content| + +!|scenario|and should contain|text| +|ensure|content contains|@text| +|show|content| + +!|scenario|and should match|text| +|ensure|content matches|@text| +|show|content| + +!|scenario|and should not contain|text| +|reject|content contains|@text| +|show|content| + +!|scenario|widget|wikiText|should render|htmlText| +|create page|WidgetPage|with content|@wikiText| +|check|request page|WidgetPage|200| +|ensure|content matches|@htmlText| +|show|content| + +!|scenario|the line|after|should come after|before| +|check|echo int|$@before|< $@after| + +!|scenario|pass| +|check|echo|pass|pass| + +!|scenario|show collapsed|content| +|show|@content| + +|scenario| show Symbol | result| +#NO ACTION in this scenario +# the symbol is printed in the call of the scenario + +!|scenario|then |pass | assertions pass, | fail| fail, | ignore| are ignored | exception | exceptions thrown| +|ensure|content matches|Assertions:<[^<]*@pass right, @fail wrong, @ignore ignored, @exception exceptions| +|show|extract match;|Assertions:<[^<]*exceptions|contents|0| + +!|scenario|and cell |text | has result | result| +|ensure|content matches| class="@result">@text<| +|show|extract match;| class="[^"]+">@text<|contents|0| + +!define TestSTART {@@@START: Test specific content} +!define TestEND {@@@END: Test specific content} + +!|scenario |and TestSystem setup is|content | +|$CONTENT=|echo|$CONTENT!- +-!@content| + +!|scenario |and setup content is|content | +|$CONTENT=|echo|$CONTENT!- +-!@content| + +!|scenario |and test content is|content | +|given page|$IT |with content|$CONTENT ${TestSTART}!-@content-!${TestEND}| +|make |$IT |a test page | + +!|scenario| get HTML result | +|start |Response Examiner.| +|setType | contents| +|setPattern |${TestSTART}[^<]*(.*>)\s*${TestEND}| +|setGroup|1| +|$HTML_Result= |found| + +|scenario| get HTML input | +|start |Response Examiner.| +|setType | pageHtml| +|setPattern |${TestSTART}[^<]*(.*>)\s*${TestEND}| +|setGroup|1| +|$HTML_Input= |found| +|show collapsed| get value| + + +!|scenario|get collapsed executon log for page|source| +|check |request page |@source?executionLog|200 | +|show |content| + +!|scenario|when page|source| is tested| +|check|request page|@source?test|200| +|show collapsed|content| + +!|scenario|when page|source| is tested and HTML is extracted| +|when page|@source| is tested| +|get HTML result| +|get HTML input | + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/ScenarioLibrary/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/ScenarioLibrary/properties.xml new file mode 100644 index 0000000..ceb5125 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/ScenarioLibrary/properties.xml @@ -0,0 +1,13 @@ + + + true + true + true + true + true + true + true + true + 1234380859396 + 7171568299669753244 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SetUp/content.txt new file mode 100644 index 0000000..02993aa --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SetUp/content.txt @@ -0,0 +1,4 @@ +!|Import| +|fitnesse.fixtures| + +!|SetUp| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SetUp/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SetUp/properties.xml new file mode 100644 index 0000000..7d5abf5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SetUp/properties.xml @@ -0,0 +1,13 @@ + + + + 20060717210029 + docs + + + + + + 1122839767051 + 2319759440361385703 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/AlwaysSecureOperation/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/AlwaysSecureOperation/content.txt new file mode 100644 index 0000000..a40b39b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/AlwaysSecureOperation/content.txt @@ -0,0 +1,14 @@ +!|script| +|given page|FrontPage| + +!note Make sure saveProperties is last, because it clears the write-lock +!|operation is authenticated| +|operation| +|purgeHistory| +|shutdown| +|renamePage| +|deletePage| +|movePage| + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/AlwaysSecureOperation/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/AlwaysSecureOperation/properties.xml new file mode 100644 index 0000000..3e87512 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/AlwaysSecureOperation/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/ScenarioLibrary/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/ScenarioLibrary/content.txt new file mode 100644 index 0000000..c1314c0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/ScenarioLibrary/content.txt @@ -0,0 +1,52 @@ +!|scenario|it should be readable with no authentication| +|check|request page|$IT|200| + +!|scenario|it should not be readable with no authentication| +|check|request page|$IT|401| + +!|scenario|it should be readable by user|user|password|password| +|check|request page|$IT|authenticated by user|@user|and password|@password|200| + +!|scenario|it should not be readable by user|user|password|password| +|check|request page|$IT|authenticated by user|@user|and password|@password|401| + +!|scenario|given read locked page|page| +|create page|@page|with authentication|secure-read=true| +|$IT=|echo|@page| + +!|scenario|given write locked page|page| +|create page|@page|with authentication|secure-write=true| +|$IT=|echo|@page| + +!|scenario|given test locked page|page| +|create page|@page|with authentication|secure-test=true| +|$IT=|echo|@page| + +!|scenario|directory|dir|should not be readable with no authentication| +|check|request page|@dir|401| + +!|scenario|directory|dir|should not be readable by user|user|password|password| +|check|request page|@dir|authenticated by user|@user|and password|@password|401| + +!|scenario|directory|dir|should be readable by user|user|password|password| +|check|request page|@dir|authenticated by user|@user|and password|@password|200| + +!|scenario|it should be not readable with no authentication| +|check|request page|$IT|401| + +!|scenario|it should not be readable by user|user|password|password| +|check|request page|$IT|authenticated by user|@user|and password|@password|401| + +!|scenario|it should be readable by user|user|password|password| +|check|request page|$IT|authenticated by user|@user|and password|@password|200| + +!|scenario|operation|operation|with bad authentication should fail| +|check|request page|$IT?@operation|authenticated by user|Aladdin|and password|open please|401| + +!|scenario|operation|operation|with good authentication should not fail| +|check not|request page|$IT?@operation|authenticated by user|Aladdin|and password|open sesame|401| + +!|scenario|operation|operation|is authenticated| +|operation|@operation|with bad authentication should fail| +|operation|@operation|with good authentication should not fail| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/ScenarioLibrary/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/ScenarioLibrary/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/ScenarioLibrary/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureReadOperations/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureReadOperations/content.txt new file mode 100644 index 0000000..59d3156 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureReadOperations/content.txt @@ -0,0 +1,24 @@ + +!|script| +|given read locked page|FrontPage| + +!|operation is authenticated| +|operation| +|properties| +|edit| +|search| +|versions| +|viewVersion| +|names| +|executeSearchProperties| +|whereUsed| +|refactor| +|pageData| +|raw| +|rss| +|importAndView| +|getPage| +|packet| +|testHistory| +|pageHistory| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureReadOperations/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureReadOperations/properties.xml new file mode 100644 index 0000000..28d2783 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureReadOperations/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureTestOperations/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureTestOperations/content.txt new file mode 100644 index 0000000..567c73b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureTestOperations/content.txt @@ -0,0 +1,16 @@ +!define PATHS { +${SUT_PATH} +!define TEST_SYSTEM (slim) +} + +!|script| +|given page|ParentPage|with content|${PATHS}| +|given test locked page|ParentPage.AwkwardTurtle| + +!|operation is authenticated| +|operation| +|suite| +|test| + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureTestOperations/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureTestOperations/properties.xml new file mode 100644 index 0000000..28d2783 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureTestOperations/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureWriteOperations/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureWriteOperations/content.txt new file mode 100644 index 0000000..ce2e08e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureWriteOperations/content.txt @@ -0,0 +1,12 @@ +!|script| +|given write locked page|FrontPage| + +!note Make sure saveProperties is last, because it clears the write-lock +!|operation is authenticated| +|operation| +|addChild| +|saveData| +|rollback| +|saveProperties| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureWriteOperations/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureWriteOperations/properties.xml new file mode 100644 index 0000000..3e87512 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SecureWriteOperations/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SetUp/content.txt new file mode 100644 index 0000000..707e632 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/SetUp/content.txt @@ -0,0 +1,9 @@ +!include + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestInsecureReadPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestInsecureReadPage/content.txt new file mode 100644 index 0000000..6932856 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestInsecureReadPage/content.txt @@ -0,0 +1,8 @@ +Make a request for an insecure page with out supplying any credentials. It should succeed. + +!|script| +|given page|FrontPage| +|it should be readable with no authentication| +|it should be readable by user|Aladdin|password|open sesame| +|it should be readable by user|Aladdin|password|open please| +|it should be readable by user|Bob|password|xyzzy| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestInsecureReadPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestInsecureReadPage/properties.xml new file mode 100644 index 0000000..28d2783 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestInsecureReadPage/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestReadChildOfSecurePage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestReadChildOfSecurePage/content.txt new file mode 100644 index 0000000..24f15b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestReadChildOfSecurePage/content.txt @@ -0,0 +1,8 @@ +Children of a page whose 'secure-read' property is set, also require authentication in order to read. The 'secure-read' property acts as though it were inherited by the children pages. + +!|script| +|given read locked page|ParentPage| +|given page|ParentPage.ChildPage| +|it should not be readable with no authentication| +|it should not be readable by user|Aladdin|password|open please| +|it should be readable by user|Aladdin|password|open sesame| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestReadChildOfSecurePage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestReadChildOfSecurePage/properties.xml new file mode 100644 index 0000000..28d2783 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestReadChildOfSecurePage/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureFilesAccess/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureFilesAccess/content.txt new file mode 100644 index 0000000..5fc086f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureFilesAccess/content.txt @@ -0,0 +1,11 @@ +!|FileSection|setup| + +Requesting a file from the ''files''' directory does not require authentication, but requesting a directory does. +A response with status 401 will be received signifying lack of authentication. + +!|script| +|directory|files/|should not be readable with no authentication| +|directory|files/|should not be readable by user|Aladdin|password|open please| +|directory|files/|should be readable by user|Aladdin|password|open sesame| + +!|FileSection|teardown| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureFilesAccess/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureFilesAccess/properties.xml new file mode 100644 index 0000000..28d2783 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureFilesAccess/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureSuitePage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureSuitePage/content.txt new file mode 100644 index 0000000..daf6070 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureSuitePage/content.txt @@ -0,0 +1,22 @@ +If we try to test a suite page that is marked secure-test, we'll have to authenticate. +A response with status 401 will be received signifying lack of authentication. + +Create a page to be tested. +!|Page creator.| +|Page name.|page attributes|valid?| +|FrontPage |secure-test=true|true| + +Now request a page. We should get a 401 since we didn't suply any credentials. +!|Response Requester.| +|uri|status?| +|FrontPage?suite |401 | + +When we supply bad credintials we get a 401. +!|Response Requester.| +|uri|username|password|status?| +|FrontPage?suite |Aladdin|open please|401| + +Proper credentials give a successfull response. +!|Response Requester.| +|uri|username|password|status?| +|FrontPage?suite |Aladdin|open sesame|200| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureSuitePage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureSuitePage/properties.xml new file mode 100644 index 0000000..1c5113b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureSuitePage/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureTestPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureTestPage/content.txt new file mode 100644 index 0000000..75ee6d9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureTestPage/content.txt @@ -0,0 +1,22 @@ +If we try to test a page that is marked secure-test, we'll have to authenticate. +A response with status 401 will be received signifying lack of authentication. + +Create a page to be tested. +!|Page creator.| +|Page name.|page attributes|valid?| +|FrontPage |secure-test=true|true| + +Now request a page. We should get a 401 since we didn't suply any credentials. +!|Response Requester.| +|uri|status?| +|FrontPage?test |401 | + +When we supply bad credintials we get a 401. +!|Response Requester.| +|uri|username|password|status?| +|FrontPage?test |Aladdin|open please|401| + +Proper credentials give a successfull response. +!|Response Requester.| +|uri|username|password|status?| +|FrontPage?test |Aladdin|open sesame|200| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureTestPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureTestPage/properties.xml new file mode 100644 index 0000000..28d2783 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/TestSecureTestPage/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/content.txt new file mode 100644 index 0000000..314ebc3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/content.txt @@ -0,0 +1,5 @@ +!define TEST_SYSTEM {slim} +!contents -g -h -p + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/properties.xml new file mode 100644 index 0000000..d5add12 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteAuthenticationTests/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/ScenarioLibrary/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/ScenarioLibrary/content.txt new file mode 100644 index 0000000..756a3de --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/ScenarioLibrary/content.txt @@ -0,0 +1,33 @@ +!|scenario|the edit response should contain|contents| +|check|request page|$IT?edit|200| +|ensure|content contains|@contents| +|show|content| + +!|scenario|attempt to edit|page | +|check |request page |@page?edit|200| + +!|scenario|save page|page|with contents|contents| +|check|request page save|@page|with contents|@contents|303| +|$IT=|echo|@page| + +!|scenario|save page|page|with contents|contents|by user|user| +|check|request page save|@page|with contents|@contents|by user|@user|and password|empty|303| +|$IT=|echo|@page| + +!|scenario|save page|page|by user|user| +|check|request page save|@page|with contents|empty|by user|@user|and password|empty|303| +|$IT=|echo|@page| + +!|scenario|save page|page| +|save page|@page|with contents|empty| + +!|scenario|it's last modified by should be|user| +|check|last modified of page|$IT|@user| + +!|scenario|it's versions should contain|content| +|page|$IT?versions|should contain|@content| + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/ScenarioLibrary/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/ScenarioLibrary/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/ScenarioLibrary/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/SetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/SetUp/content.txt new file mode 100644 index 0000000..ffb7cf1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/SetUp/content.txt @@ -0,0 +1,6 @@ +!include + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestEditExistingPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestEditExistingPage/content.txt new file mode 100644 index 0000000..4e77b4c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestEditExistingPage/content.txt @@ -0,0 +1,13 @@ +!2 Test editing an existent page. +The form should have a normal header, an edit area filled with the current contents of the page, and a save button. +---- + +!|script| +|given page|SomePage|with content|some content| +|the edit response should contain|SomePage| +|and should match|some content| +|and should match|| +|and should match|action="SomePage"| +|and should match|| +|and should match|type="submit"| +|and should match|value="Save"| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestEditExistingPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestEditExistingPage/properties.xml new file mode 100644 index 0000000..c4ced86 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestEditExistingPage/properties.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + 1229153458931 + 3161918505796726939 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestEditNewPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestEditNewPage/content.txt new file mode 100644 index 0000000..4387afb --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestEditNewPage/content.txt @@ -0,0 +1,9 @@ +!2 Test editing a non-existent page. +The form should have a normal header, a blank edit area, a save button. + +!|script | +|attempt to edit |SomeNonExistentPage | +|and should match| | +|and should match| | +|and should match|action="SomeNonExistentPage"| +|and should match|type="submit" | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestEditNewPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestEditNewPage/properties.xml new file mode 100644 index 0000000..f3519d2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestEditNewPage/properties.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + 1229153513098 + -3655776539143142112 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUnicodeCharacters/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUnicodeCharacters/content.txt new file mode 100644 index 0000000..36d35aa --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUnicodeCharacters/content.txt @@ -0,0 +1,3 @@ +!|script| +|save page|NewPage|with contents|þðæö| +|it should contain|þðæö| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUnicodeCharacters/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUnicodeCharacters/properties.xml new file mode 100644 index 0000000..2dab0f0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUnicodeCharacters/properties.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + 1229153634306 + 2076309857569861535 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInProperties/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInProperties/content.txt new file mode 100644 index 0000000..b748aca --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInProperties/content.txt @@ -0,0 +1,10 @@ +The username of the person who last modified a page is displayed in the properties view of the modified page. + +!|script| +|save page|PageOne|by user|Aladdin| +|it's last modified by should be|Aladdin| +|save page|PageTwo|by user|Genie| +|it's last modified by should be|Genie| +|save page|PageThree| +|it's last modified by should be|null| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInProperties/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInProperties/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInProperties/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInRecentChanges/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInRecentChanges/content.txt new file mode 100644 index 0000000..218b3a4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInRecentChanges/content.txt @@ -0,0 +1,6 @@ +!-RecentChanges-! displays the username of the last user that modified each page. If the user is anonymous then it is not displayed. + +!|script| +|page|RecentChanges|should not contain|Aladdin| +|save page|SomePage|by user|Aladdin| +|page|RecentChanges|should contain|Aladdin| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInRecentChanges/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInRecentChanges/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInRecentChanges/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInVersions/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInVersions/content.txt new file mode 100644 index 0000000..55b63b1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInVersions/content.txt @@ -0,0 +1,7 @@ +When viewing versions, the user who created each ''previous'' version is listed along with each version. Anonymous users are omitted. + +!|script| +|save page|MyPage|by user|Bob| +|save page|MyPage|by user|Bill| +|it's versions should contain|Bob| +|and should match|>\d+<| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInVersions/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInVersions/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameInVersions/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameSaved/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameSaved/content.txt new file mode 100644 index 0000000..4798b20 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameSaved/content.txt @@ -0,0 +1,7 @@ +The username is saved when a page is edited. It is visible through use of the !-!lastmodified-! widget. + +!|script| +|save page|MyPage|with contents|!lastModified| +|it should not contain|bob| +|save page|MyPage|with contents|!lastmodified|by user|bob| +|it should contain|bob| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameSaved/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameSaved/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/TestUserNameSaved/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/content.txt new file mode 100644 index 0000000..d94ff56 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/content.txt @@ -0,0 +1,3 @@ +The edit responder is invoked with a url of the form {{{SomePage?edit}}} +!contents -R2 -p +!define TEST_SYSTEM {slim} diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/properties.xml new file mode 100644 index 0000000..ac29904 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteEditResponderTests/properties.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + 1229153668185 + 5760355884637638070 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/CopyAndAppendLastRow/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/CopyAndAppendLastRow/content.txt new file mode 100644 index 0000000..6d9cd40 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/CopyAndAppendLastRow/content.txt @@ -0,0 +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. + +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| +|Division| +|numerator|denominator|quotient()| +|10|2|5| +|12.6|3|4.2| +|100|4|25| + +In the above example, we want to divide 100 by 4 101 times. diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/CopyAndAppendLastRow/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/CopyAndAppendLastRow/properties.xml new file mode 100644 index 0000000..4646681 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/CopyAndAppendLastRow/properties.xml @@ -0,0 +1,13 @@ + + + + + 20061216213113 + + + + + 1166322673244 + + 524008525574625139 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/CopyAppendLastRowAndIncrementColumnValues/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/CopyAppendLastRowAndIncrementColumnValues/content.txt new file mode 100644 index 0000000..58c220f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/CopyAppendLastRowAndIncrementColumnValues/content.txt @@ -0,0 +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? + +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. + +!|Copy and Append Last Row|100|times| +|Increment Columns Value|numerator|of type|int|by|5| +|Increment Columns Value|denominator|of type|int|by|1| +|Division| +|numerator|denominator|quotient()| +|5|1|5| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/CopyAppendLastRowAndIncrementColumnValues/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/CopyAppendLastRowAndIncrementColumnValues/properties.xml new file mode 100644 index 0000000..248425b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/CopyAppendLastRowAndIncrementColumnValues/properties.xml @@ -0,0 +1,13 @@ + + + + + 20061216215829 + + + + + 1166324308994 + + -8528063939302055872 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/IncrementColumnsValues/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/IncrementColumnsValues/content.txt new file mode 100644 index 0000000..8f8916d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/IncrementColumnsValues/content.txt @@ -0,0 +1,42 @@ +What if you want to increment the value of one of the columns of your fixture table at run time? You can use the !-IncrementColumnsValue-! decorator. This lets you increment column's values. This decorator supports the following data types: + * int or integer + * double + * string + * date + +!|Increment Columns Value|numerator|of type|int|by|5| +|Division| +|numerator|denominator|quotient()| +|10|2|5| +|10|3|5| +|10|4|5| + +!|Increment Columns Value|numerator|of type|integer|by|5| +|Division| +|numerator|denominator|quotient()| +|10|2|5| +|10|3|5| +|10|4|5| + +!|Increment Columns Value|numerator|of type|double|by|10.2| +|Division| +|numerator|denominator|quotient()| +|10.2|2|5.1| +|10.2|4|5.1| + +!|Increment Columns Value|numerator|of type|string|by|5| +|Division| +|numerator|denominator|quotient()| +|5|1|5| +|5|11|5| +|5|111|5| + +Updates the dates by 5 days. +!|Increment Columns Value|inDate|of type|date|by|5| +|Get Dates| +|inDate|updatedDate()| +|12/02/2006|12/02/2006| +|12/02/2006|12/07/2006| +|12/22/2006|01/01/2007| + +This decorator by itself is not as useful. But piped with other decorators this can be really handy. \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/IncrementColumnsValues/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/IncrementColumnsValues/properties.xml new file mode 100644 index 0000000..af3175f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/IncrementColumnsValues/properties.xml @@ -0,0 +1,13 @@ + + + + + 20081020135129 + + + + + 1166413276084 + + 8229942939854899838 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/MaxTimeDivision/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/MaxTimeDivision/content.txt new file mode 100644 index 0000000..6ed36ba --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/MaxTimeDivision/content.txt @@ -0,0 +1,20 @@ +Consider you have a simple fit test as follows: + +!|Division| +|numerator|denominator|quotient()| +|10|2|5| +|12.6|3|4.2| +|100|4|25| + +Now you want to measure how much time this test is taking to execute. But you don't want to or cannot modify the existing test fixture. Basically you want to decorate the existing fit tests with extra features. + +It would be cool if you could write a decorator around your fit test which starts a timer before the execution of the fit test starts, runs the fit test as usual and once the execution is completed it records the amount of time it took to run the test. An assertion on the execution time to make sure it executes within a max time is also quite handy to be aware of the application's performance over a period of time. Something like this: + +!|Max Time|100|milliseconds| +|Division| +|numerator|denominator|quotient()| +|10|2|5| +|12.6|3|4.2| +|100|4|25| + +'''Note:''' As of now, all the times are in milliseconds. The parameter "milliseconds" in the fixture above is just ignored. diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/MaxTimeDivision/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/MaxTimeDivision/properties.xml new file mode 100644 index 0000000..40bef8a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/MaxTimeDivision/properties.xml @@ -0,0 +1,13 @@ + + + + + 20081020135129 + + + + + 1166312743925 + + -1637353253013255969 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/MultipleDivision/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/MultipleDivision/content.txt new file mode 100644 index 0000000..1e8bb40 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/MultipleDivision/content.txt @@ -0,0 +1,15 @@ +What if you want to execute the same fitnesse test multiple times. This seems like nice a candidate for a decorator. + +If you want to loop 5 times over a fitnesse table and make sure each time the test does not take more than 1000 milliseconds. + +!|Loop|5|times| +|Max Time|1000|milliseconds| +|Division| +|numerator|denominator|quotient()| +|10|2|5| +|12.6|3|4.2| +|100|4|25| + +Once you run this test, you can see actual time taken for each run. In our case, we'll see 5 actual timing printed, since we are looping 5 times. + +'''Note:''' As you can see, you can pipe decorators. Similar to how you can pipe Unix shell commands. diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/MultipleDivision/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/MultipleDivision/properties.xml new file mode 100644 index 0000000..c38b764 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/MultipleDivision/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + 1166313289708 + + -7438421477570336896 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/SetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/SetUp/content.txt new file mode 100644 index 0000000..6bf4596 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/SetUp/content.txt @@ -0,0 +1,4 @@ +!|Import| +|fit.decorator| +|fit.decorator.performance| +|eg| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/SetUp/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/SetUp/properties.xml new file mode 100644 index 0000000..47bf822 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/SetUp/properties.xml @@ -0,0 +1,14 @@ + + + true + true + 20061216183948 + true + true + true + true + true + true + 1166312388007 + -6757238585913794424 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TearDown/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TearDown/content.txt new file mode 100644 index 0000000..7931d99 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TearDown/content.txt @@ -0,0 +1 @@ +!|fit.Summary| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TearDown/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TearDown/properties.xml new file mode 100644 index 0000000..b7f5c22 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TearDown/properties.xml @@ -0,0 +1,14 @@ + + + true + true + 20061216141632 + true + true + true + true + true + true + 1166296592283 + -5128325404176707243 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TimeRangeDivision/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TimeRangeDivision/content.txt new file mode 100644 index 0000000..e96e8fb --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TimeRangeDivision/content.txt @@ -0,0 +1,19 @@ +What if you want to specify a time range for your fitnesse fixtures? + +!|Time Range|0|milliseconds min and max|200|milliseconds| +|Division| +|numerator|denominator|quotient()| +|10|2|5| +|12.6|3|4.2| +|100|4|25| + +In this example, you want to make sure all the division don't take less than 0 milliseconds and more than 50 milliseconds. + +By now you should be aware that these decorators ignore alternative column names. + +!|Time Range|0|alternative column values are ignored|200|this is ignored as well| +|Division| +|numerator|denominator|quotient()| +|10|2|5| +|12.6|3|4.2| +|100|4|25| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TimeRangeDivision/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TimeRangeDivision/properties.xml new file mode 100644 index 0000000..6cf8e63 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TimeRangeDivision/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + 1166313795208 + + -6211985429310204450 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TimedMultipleDivision/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TimedMultipleDivision/content.txt new file mode 100644 index 0000000..799ec5d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TimedMultipleDivision/content.txt @@ -0,0 +1,12 @@ +What if you want to run the same fitnesse fixture, 5 times and want to make sure that each time it runs it does not take more than 200 milliseconds? Also you want to make sure overall, it does not take more than 1000 milliseconds. + +!|Max Time|1000|milliseconds| +|Loop|5|times| +|Max Time|200|milliseconds| +|Division| +|numerator|denominator|quotient()| +|10|2|5| +|12.6|3|4.2| +|100|4|25| + +'''Note:''' Again you can see here, how you can pipe different decorators and create powerful decorator patterns. diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TimedMultipleDivision/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TimedMultipleDivision/properties.xml new file mode 100644 index 0000000..9b61be2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/TimedMultipleDivision/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + 1166313499121 + + 8781183260268546089 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/content.txt new file mode 100644 index 0000000..61c3e10 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/content.txt @@ -0,0 +1,17 @@ +!-FitDecorator-! is a framework for writing decorator for FIT fixtures. !-FitDecorator-! help you to add new functionality to existing fixture classes without having to update them. You can just decorate the table on the fitnesse page with the appropriate !-FitDecorator-!. + +For example, if you want to approximately know how much time each fixture is taking during a fitnesse test, you can decorate the existing fitnesse table with a !-MaxTime-! decorator. + +List of available decorators and their functionality with an example: + + * [[Measure Max Time taken by the Division Fixture by using !-MaxTime-! decorator][^MaxTimeDivision]] + * [[Execute Division Fixture multiple times using Loop Decorator][^MultipleDivision]] + * [[Example of piping !-MaxTime-! and Loop decorator to build complex decorators][^TimedMultipleDivision]] + * [[Measure if the Division Fixture is executed in the given Time Range using the !-TimeRange-! decorator][^TimeRangeDivision]] + * [[Copy the last row and append it to the end of the table 'n' number of times using !-CopyAndAppendLastRow-! decorator][^CopyAndAppendLastRow]] + * [[Increment all the subsequent column values using the !-IncrementColumnsValues-! decorator][^IncrementColumnsValues]] + * [[Example of piping !-CopyAndAppendLastRow-! and !-IncrementColumnsValues-! decorators][^CopyAppendLastRowAndIncrementColumnValues]] + +'''Note:''' !-FitDecorator-! does not support [[Fit Library][http://fitlibrary.sourceforge.net]] as of now. + +!contents \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/properties.xml new file mode 100644 index 0000000..a06213b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFitDecoratorTests/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + 1166331006945 + + -455847644342679400 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestArraysInColumnFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestArraysInColumnFixture/content.txt new file mode 100644 index 0000000..b9a54c3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestArraysInColumnFixture/content.txt @@ -0,0 +1,16 @@ +!3 You can put arrays of objects into ColumnFixture fixtures. + +!|fitnesse.fixtures.ComplexAddFixture| +|a|b|sum?| +|1,2|3,4|4,6| + +{{{ +public class ComplexAddFixture extends ColumnFixture +{ + public int[] a; + public int[] b; + public int[] sum() { + return new int[] {a[0]+b[0], a[1]+b[1]}; + } +} +}}} diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestArraysInColumnFixture/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestArraysInColumnFixture/properties.xml new file mode 100644 index 0000000..34fcc1d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestArraysInColumnFixture/properties.xml @@ -0,0 +1,12 @@ + + + + 20060717210038 + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestMissingField/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestMissingField/content.txt new file mode 100644 index 0000000..a034596 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestMissingField/content.txt @@ -0,0 +1,26 @@ +!3 When testing a column fixture, if the header row mentions a field that is not in the fixture, then the following message should appear in that cell: +{{{Could not find field: fieldname.}}} + + * Here is a fitnesse page that should generate the error +!note The !-!path-! must point to fitnesse-standalone.jar +!note !-ColumnFixtureTestFixture-! is a special class used for testing Column fixtures. +|Action fixture| +|start|Page builder| +|enter|attributes|Test=true| +|enter|line|${SUT_PATH}| +|enter|line|!-|Import|-!| +|enter|line|!-|fitnesse.fixtures|-!| +|enter|line|| +|enter|line|!-|Column fixture test fixture|-!| +|enter|line|!-|no such field|-!| +|enter|page|!-ColumnFixtureTestPage-!| + +!|Response Requester| +|uri|status?| +|ColumnFixtureTestPage?test|200| + + * The error message should show up in the response + +!|Response examiner| +|type|pattern|matches?|contents?| +|contents|Could not find field: no such field|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestMissingField/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestMissingField/properties.xml new file mode 100644 index 0000000..1c5113b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestMissingField/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestMissingMethod/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestMissingMethod/content.txt new file mode 100644 index 0000000..d3d763f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestMissingMethod/content.txt @@ -0,0 +1,34 @@ +!3 When testing a column fixture, if the header row mentions a method that is not in the fixture, then the following message should appear in that cell: +{{{Could not find method: methodName.}}} + + * Here is a fitnesse page that should generate the error +!note The !-!path-! must point to fitnesse.jar +!note !-ColumnFixtureTestFixture-! is a special class used for testing Column fixtures. +|Action fixture| +|start|Page builder| +|enter|attributes|Test=true| +|enter|line|${SUT_PATH}| +|enter|line|!-|Import|-!| +|enter|line|!-|fitnesse.fixtures|-!| +|enter|line|| +|enter|line|!-|Column fixture test fixture|-!| +|enter|line|!-|no such method()|-!| +|enter|page|!-ColumnFixtureTestPage-!| + +!|Response requester| +|uri|contents?| +|ColumnFixtureTestPage|| + +!|Response examiner| +|contents?| +|| + +!|Response Requester| +|uri|status?| +|ColumnFixtureTestPage?test|200| + + * The error message should show up in the response + +!|Response examiner| +|type|pattern|matches?|contents?| +|contents|Could not find method: no such method()|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestMissingMethod/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestMissingMethod/properties.xml new file mode 100644 index 0000000..1c5113b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestMissingMethod/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestSaveAndRecallSymbol/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestSaveAndRecallSymbol/content.txt new file mode 100644 index 0000000..100749d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestSaveAndRecallSymbol/content.txt @@ -0,0 +1,41 @@ +!3 You can save and recall symbols in a !-ColumnFixture-!. You do this by using the =id? and id= syntax. + + * =id? or =id() takes the output of a function and stores it in the symbol named by the cell. In the example below the integer 1 is stored in the symbol ''one'', and the integer 2 is stored in the symbol ''two''. + * id= recalls the value of the symbol named by the cell, and puts it in the ''id'' variable. + +!|fitnesse.fixtures.ColumnFixtureTestFixture| +|input|=output?| +|1|one| +|2|two| + +!|fitnesse.fixtures.ColumnFixtureTestFixture| +|input=|output?| +|one|1| +|two|2| + +'''With classed integral types, there's a chance the value may be null as a correct result:''' +!|fitnesse.fixtures.ColumnFixtureTestFixture| +|integerInput|=integerOutput?| +|1|one| +|2|two| +|null|three| + +!|fitnesse.fixtures.ColumnFixtureTestFixture| +|integerInput=|integerOutput?| +|one|1| +|two|2| +|three|null| + +{{{ +public class ColumnFixtureTestFixture extends ColumnFixture +{ + public int input; + public int output() {return input;} + + public Integer integerInput; + public Integer integerOutput() { return integerInput; } + + public boolean exception() throws Exception {throw new Exception("I thowed up");} +} +}}} + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestSaveAndRecallSymbol/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestSaveAndRecallSymbol/properties.xml new file mode 100644 index 0000000..b7f6c15 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/TestSaveAndRecallSymbol/properties.xml @@ -0,0 +1,14 @@ + + + + 20081020135129 + + + + + + + + 1201547989632 + -7853206946547459455 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/content.txt new file mode 100644 index 0000000..651ad30 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/content.txt @@ -0,0 +1,5 @@ +^TestSaveAndRecallSymbol +^TestArraysInColumnFixture +^TestMissingField +^TestMissingMethod + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/properties.xml new file mode 100644 index 0000000..3cd565a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteColumnFixtureSpec/properties.xml @@ -0,0 +1,12 @@ + + + + 20060717210038 + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestBlankAndNullCells/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestBlankAndNullCells/content.txt new file mode 100644 index 0000000..8c62b6a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestBlankAndNullCells/content.txt @@ -0,0 +1,21 @@ +!3 If a cell contains ''"blank"'' or ''"null"'' then treat it as truly blank or truly null. + +Lots of people have had trouble with blank cells. In Fit, blank cells are automatically filled with the value of the variable or function, and no check is performed. Unfortunately this means that there was no good test for truly null or truly blank fields. So these keywords were added to allow users to enter them. + +!|fitnesse.fixtures.NullAndBlankFixture| +|nullString|blankString|nullString?|blankString?|isNull?|isBlank?| +|null |blank |null |blank |Y |Y | +| | | | |Y |Y | +|bob |micah | | |N |N | + +{{{ +public class NullAndBlankFixture extends ColumnFixture +{ + public String nullString; + public String blankString; + public String nullString() {return null;} + public String blankString() {return "";} + public boolean isNull() {return nullString == null;} + public boolean isBlank() {return blankString.length() == 0;} +} +}}} \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestBlankAndNullCells/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestBlankAndNullCells/properties.xml new file mode 100644 index 0000000..fd566a1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestBlankAndNullCells/properties.xml @@ -0,0 +1,12 @@ + + + + 20060717210040 + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestCannotResolveGracefullyNamedFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestCannotResolveGracefullyNamedFixture/content.txt new file mode 100644 index 0000000..79de817 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestCannotResolveGracefullyNamedFixture/content.txt @@ -0,0 +1,25 @@ +!3 When testing a table, if the first cell of the table refers to a graceful name resolving to a class that does not extend Fixture, then the following message should appear in that cell: +{{{Class fixtureName is not a fixture.}}} + + * Here is a fitnesse page that should generate the error +!note The !-!path-! must point to fitnesse.jar +!note !-WouldBeFixture-! is a real class, but is not a Fixture +|Action fixture| +|start|Page builder| +|enter|attributes|Test=true| +|enter|line|${SUT_PATH} | +|enter|line|!-|Import|-!| +|enter|line|!-|fit.testFxtr|-!| +|enter|line|| +|enter|line|!-|Would Be|-!| +|enter|page|!-NotFixturePage-!| + +!|Response Requester| +|uri|status?| +|NotFixturePage?test|200| + + * The error message should show up in the response + +!|Response examiner| +|type|pattern|matches?|contents?| +|contents|Class fit.testFxtr.WouldBeFixture is not a fixture.|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestCannotResolveGracefullyNamedFixture/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestCannotResolveGracefullyNamedFixture/properties.xml new file mode 100644 index 0000000..82faa79 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestCannotResolveGracefullyNamedFixture/properties.xml @@ -0,0 +1,17 @@ + + + + + + 20090311030449 + + + + + + + + + 1236758689929 + -5230999437416113217 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestFixtureNotFound/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestFixtureNotFound/content.txt new file mode 100644 index 0000000..9fc4d5e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestFixtureNotFound/content.txt @@ -0,0 +1,26 @@ +!3 When testing a table, if the first cell of the table does not refer to a class in the classpath, then the following message should appear in that cell: +{{{Could not find fixture: fixtureName.}}} + + * Here is a fitnesse page that should generate the error + +!note The !-!path-! must point to fitnesse.jar +| Action fixture | +| start | Page builder | +| enter | attributes | Test=true | +| enter | line | ${SUT_PATH} | +| enter | line | !-|No such fixture|-! | +| enter | page | !-NoSuchFixturePage-! | + +!| Response Requester | +| uri | status? | +| NoSuchFixturePage?test | 200 | + + * The error message should show up in the response + +!| Response examiner | +| type | pattern | matches? | contents? | +| contents | Could not find fixture: NoSuchFixture | true | | + +!| Response requester | +| uri | contents? | +| NoSuchFixturePage?executionLog | | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestFixtureNotFound/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestFixtureNotFound/properties.xml new file mode 100644 index 0000000..dbb1fc4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestFixtureNotFound/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestFixtureNotFoundAfterTackingOnFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestFixtureNotFoundAfterTackingOnFixture/content.txt new file mode 100644 index 0000000..accff2b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestFixtureNotFoundAfterTackingOnFixture/content.txt @@ -0,0 +1,26 @@ +!3 When testing a table, if the first cell of the table does not refer to a class in the classpath, then the following message should appear in that cell: +{{{Could not find fixture: fixtureName.}}} + + * Here is a fitnesse page that should generate the error + +!note The !-!path-! must point to fitnesse.jar +| Action fixture | +| start | Page builder | +| enter | attributes | Test=true | +| enter | line | ${SUT_PATH} | +| enter | line | !-!|NoSuch|-! | +| enter | page | !-NoSuchFixturePage-! | + +!| Response Requester | +| uri | status? | +| NoSuchFixturePage?test | 200 | + + * The error message should show up in the response + +!| Response examiner | +| type | pattern | matches? | contents? | +| contents | Could not find fixture: NoSuch | true | | + +!| Response requester | +| uri | contents? | +| NoSuchFixturePage?executionLog | | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestFixtureNotFoundAfterTackingOnFixture/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestFixtureNotFoundAfterTackingOnFixture/properties.xml new file mode 100644 index 0000000..dbb1fc4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestFixtureNotFoundAfterTackingOnFixture/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestNoDefaultConstructor/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestNoDefaultConstructor/content.txt new file mode 100644 index 0000000..d8e78f0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestNoDefaultConstructor/content.txt @@ -0,0 +1,22 @@ +!3 When testing a table, if the first cell of the table refers to a fixture class without a default (no argument) constructor, then the following message should appear in that cell: +{{{Class fixtureName has no default constructor.}}} + + * Here is a fitnesse page that should generate the error +!note The !-!path-! must point to fitnesse.jar +!note !-NoDefaultConstructorFixture-! is a real class, but is not a Fixture +|Action fixture| +|start|Page builder| +|enter|attributes|Test=true| +|enter|line|${SUT_PATH}| +|enter|line|!-|-!!-!-fit.testFxtr.NoDefaultConstructorFixture-!-!!-|-!| +|enter|page|!-NotFixturePage-!| + +!|Response Requester| +|uri|status?| +|NotFixturePage?test&debug|200| + + * The error message should show up in the response + +!|Response examiner| +|type|pattern|matches?|contents?| +|contents|Class fit.testFxtr.NoDefaultConstructorFixture has no default constructor.|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestNoDefaultConstructor/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestNoDefaultConstructor/properties.xml new file mode 100644 index 0000000..fa7c300 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestNoDefaultConstructor/properties.xml @@ -0,0 +1,17 @@ + + + + + + 20090311030525 + + + + + + + + + 1236758725882 + -6794566941067712896 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestNotFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestNotFixture/content.txt new file mode 100644 index 0000000..5976067 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestNotFixture/content.txt @@ -0,0 +1,22 @@ +!3 When testing a table, if the first cell of the table refers to a class that does not extend Fixture, then the following message should appear in that cell: +{{{Class fixtureName is not a fixture.}}} + + * Here is a fitnesse page that should generate the error +!note The !-!path-! must point to fitnesse.jar +!note !-WouldBeFixture-! is a real class, but is not a Fixture +|Action fixture| +|start|Page builder| +|enter|attributes|Test=true| +|enter|line|${SUT_PATH}| +|enter|line|!-|-!!-!-fit.testFxtr.WouldBeFixture-!-!!-|-!| +|enter|page|!-NotFixturePage-!| + +!|Response Requester| +|uri|status?| +|NotFixturePage?test|200| + + * The error message should show up in the response + +!|Response examiner| +|type|pattern|matches?|contents?| +|contents|Class fit.testFxtr.WouldBeFixture is not a fixture.|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestNotFixture/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestNotFixture/properties.xml new file mode 100644 index 0000000..6e3a8eb --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestNotFixture/properties.xml @@ -0,0 +1,17 @@ + + + + + + 20090311030613 + + + + + + + + + 1236758773715 + -6171906091001795859 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestParsingOfObjects/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestParsingOfObjects/content.txt new file mode 100644 index 0000000..72e9c0b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestParsingOfObjects/content.txt @@ -0,0 +1,45 @@ +Table cells contain strings. Fixtures deal with objects. In order to convert the strings into the objects FIT needs to know how to parse the strings. One way we accomplish this is to allow the objects to have the following method:{{{Object parse(String s);}}}The following table shows the result of adding two vectors. Each vector is represented by an ordered pair which represents it's X and Y dimensions. The class CartesianVector is used to parse, display, and sum the vectors. + +!|fitnesse.testutil.VectorSum| +|v1|v2|sum?| +|(0,0)|(0,1)|(0,1)| +|(0,1)|(0,1)|(0,2)| +|(1,1)|(1,1)|(2,2)| + +It is not always possible to add a parse method on the Object returned by the fixture. + +For Ex. if your fixture returns java.awt.Point class which does not have a {{{Object parse(String s);}}} method, this approach won't work. + +Following approach can be used to delegate the parse method to a different class (Parse Delegate class). The parse delegate class has the {{{Object parse(String s);}}} method which returns the Object we are interested in. + +The following table shows the result of adding two points. Each point is represented by an ordered pair which represents it's X and Y dimensions. + +!|fitnesse.testutil.ObjectTranslatePoint| +|p1|p2|sum?| +|(0,0)|(0,1)|(0,1)| +|(0,1)|(0,1)|(0,2)| +|(1,1)|(1,1)|(2,2)| + +In the ObjectTranslatePoint fixture, we have a static block which registers the parse delegate object for a give Class type. + +Ex: +{{{static +{ + TypeAdapter.registerParseDelegate(java.awt.Point.class, new ObjectDelegatePointParser()); +} +}}}Please note that we are passing a Object of the Parse Delegate class. It is also possible to pass a class instead of the object. Only difference being the parse delegate class should have a {{{public static Object parse(String s);}}} method. + +!|fitnesse.testutil.ClassTranslatePoint| +|p1|p2|sum?| +|(0,0)|(0,1)|(0,1)| +|(0,1)|(0,1)|(0,2)| +|(1,1)|(1,1)|(2,2)| + +In the ClassTranslatePoint fixture, we have a static block which registers the parse delegate class for a give Class type. + +Ex: +{{{static +{ + TypeAdapter.registerParseDelegate(java.awt.Point.class, ClassDelegatePointParser.class); +} +}}} \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestParsingOfObjects/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestParsingOfObjects/properties.xml new file mode 100644 index 0000000..814e0f0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestParsingOfObjects/properties.xml @@ -0,0 +1,14 @@ + + + + 20081020135128 + + + + + + + + 1165041374300 + -4287311746097088003 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestTackOnFixtureNotFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestTackOnFixtureNotFixture/content.txt new file mode 100644 index 0000000..66d419b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestTackOnFixtureNotFixture/content.txt @@ -0,0 +1,22 @@ +!3 When testing a table, if the first cell of the table refers to a class (after adding 'Fixture' to the end of the name) that does not extend Fixture, then the following message should appear in that cell: +{{{Class fixtureName is not a fixture.}}} + + * Here is a fitnesse page that should generate the error +!note The !-!path-! must point to fitnesse.jar +!note !-WouldBeFixture-! is a real class, but is not a Fixture +|Action fixture| +|start|Page builder| +|enter|attributes|Test=true| +|enter|line|${SUT_PATH}| +|enter|line|!-|-!!-!-fit.testFxtr.WouldBe-!-!!-|-!| +|enter|page|!-NotFixturePage-!| + +!|Response Requester| +|uri|status?| +|NotFixturePage?test|200| + + * The error message should show up in the response + +!|Response examiner| +|type|pattern|matches?|contents?| +|contents|Class fit.testFxtr.WouldBeFixture is not a fixture.|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestTackOnFixtureNotFixture/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestTackOnFixtureNotFixture/properties.xml new file mode 100644 index 0000000..c12e8bf --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/TestTackOnFixtureNotFixture/properties.xml @@ -0,0 +1,17 @@ + + + + + + 20090311030647 + + + + + + + + + 1236758807059 + -6742986396526469934 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/content.txt new file mode 100644 index 0000000..61fee23 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/content.txt @@ -0,0 +1,8 @@ +^TestBlankAndNullCells +^TestParsingOfObjects +^TestFixtureNotFound +^TestFixtureNotFoundAfterTackingOnFixture +^TestNotFixture +^TestTackOnFixtureNotFixture +^TestCannotResolveGracefullyNamedFixture +^TestNoDefaultConstructor \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/properties.xml new file mode 100644 index 0000000..43b4477 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteGeneralFixtureSpec/properties.xml @@ -0,0 +1,15 @@ + + + + + + 20090311030540 + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteRowFixtureSpec/TestBasicRowFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteRowFixtureSpec/TestBasicRowFixture/content.txt new file mode 100644 index 0000000..7f74b05 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteRowFixtureSpec/TestBasicRowFixture/content.txt @@ -0,0 +1,9 @@ +A simple list of prime numbers. This fixture should pass. + +|!-fitnesse.fixtures.PrimeNumberRowFixture-!| +|prime| +|2| +|3| +|5| +|7| +|11| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteRowFixtureSpec/TestBasicRowFixture/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteRowFixtureSpec/TestBasicRowFixture/properties.xml new file mode 100644 index 0000000..8c5ff6c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteRowFixtureSpec/TestBasicRowFixture/properties.xml @@ -0,0 +1,12 @@ + + + + 20060717210045 + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteRowFixtureSpec/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteRowFixtureSpec/content.txt new file mode 100644 index 0000000..bcf74df --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteRowFixtureSpec/content.txt @@ -0,0 +1 @@ +^TestBasicRowFixture diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteRowFixtureSpec/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteRowFixtureSpec/properties.xml new file mode 100644 index 0000000..8849891 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/SuiteRowFixtureSpec/properties.xml @@ -0,0 +1,12 @@ + + + + 20060717210044 + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/content.txt new file mode 100644 index 0000000..e520df5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/content.txt @@ -0,0 +1,4 @@ +^SuiteColumnFixtureSpec +^SuiteGeneralFixtureSpec +^SuiteRowFixtureSpec + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/properties.xml new file mode 100644 index 0000000..3cd565a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteFixtureTests/properties.xml @@ -0,0 +1,12 @@ + + + + 20060717210038 + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddChildToNonExistentPageTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddChildToNonExistentPageTest/content.txt new file mode 100644 index 0000000..b0ef86c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddChildToNonExistentPageTest/content.txt @@ -0,0 +1,3 @@ +!|script| +|add child page|ChildPage|containing|child content|to parent page|NoSuchPage|should return Not Found| +|page|ParentPage.ChildPage|should not contain|child content| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddChildToNonExistentPageTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddChildToNonExistentPageTest/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddChildToNonExistentPageTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddDefaultWithNameOfSuiteTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddDefaultWithNameOfSuiteTest/content.txt new file mode 100644 index 0000000..9a5a22d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddDefaultWithNameOfSuiteTest/content.txt @@ -0,0 +1,4 @@ +!|script| +|given page|ParentPage| +|add child page|SuiteChild|containing|child content|to parent page|ParentPage|should return Redirect| +|ensure|page|ParentPage.SuiteChild|has attribute|Suite| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddDefaultWithNameOfSuiteTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddDefaultWithNameOfSuiteTest/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddDefaultWithNameOfSuiteTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddDefaultWithNameOfTestTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddDefaultWithNameOfTestTest/content.txt new file mode 100644 index 0000000..aa62a74 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddDefaultWithNameOfTestTest/content.txt @@ -0,0 +1,4 @@ +!|script| +|given page|ParentPage| +|add child page|TestChild|containing|child content|to parent page|ParentPage|should return Redirect| +|ensure|page|ParentPage.TestChild|has attribute|Test| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddDefaultWithNameOfTestTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddDefaultWithNameOfTestTest/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddDefaultWithNameOfTestTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddInvalidChildNameTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddInvalidChildNameTest/content.txt new file mode 100644 index 0000000..dd35939 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddInvalidChildNameTest/content.txt @@ -0,0 +1,3 @@ +!| script | +| given page | ParentPage | +| add child page | bad+name | containing | child content | to parent page | ParentPage | should return BadRequest | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddInvalidChildNameTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddInvalidChildNameTest/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddInvalidChildNameTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddNormalWithNameOfSuiteTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddNormalWithNameOfSuiteTest/content.txt new file mode 100644 index 0000000..a127e18 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddNormalWithNameOfSuiteTest/content.txt @@ -0,0 +1,5 @@ +!|script| +|given page|ParentPage| +|add child page|SuiteChild|of type|Static|containing|child content|to parent page|ParentPage|should return Redirect| +|reject|page|ParentPage.SuiteChild|has attribute|Suite| +|reject|page|ParentPage.SuiteChild|has attribute|Test| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddNormalWithNameOfSuiteTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddNormalWithNameOfSuiteTest/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddNormalWithNameOfSuiteTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddNormalWithNameOfTestTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddNormalWithNameOfTestTest/content.txt new file mode 100644 index 0000000..19b49c9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddNormalWithNameOfTestTest/content.txt @@ -0,0 +1,5 @@ +!|script| +|given page|ParentPage| +|add child page|TestChild|of type|Static|containing|child content|to parent page|ParentPage|should return Redirect| +|reject|page|ParentPage.TestChild|has attribute|Suite| +|reject|page|ParentPage.TestChild|has attribute|Test| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddNormalWithNameOfTestTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddNormalWithNameOfTestTest/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddNormalWithNameOfTestTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddSimpleChildPageTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddSimpleChildPageTest/content.txt new file mode 100644 index 0000000..734322c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddSimpleChildPageTest/content.txt @@ -0,0 +1,4 @@ +!|script| +|given page|ParentPage| +|add child page|ChildPage|containing|child content|to parent page|ParentPage|should return Redirect| +|page|ParentPage.ChildPage|should contain|child content| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddSimpleChildPageTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddSimpleChildPageTest/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddSimpleChildPageTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddSuitePageTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddSuitePageTest/content.txt new file mode 100644 index 0000000..83381cc --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddSuitePageTest/content.txt @@ -0,0 +1,6 @@ +!|script| +|given page|ParentPage| +|add child page|ChildPage|of type|Suite|containing|child content|to parent page|ParentPage|should return Redirect| +|page|ParentPage.ChildPage|should contain|child content| +|ensure|page|ParentPage.ChildPage|has attribute|Suite| +|reject|page|ParentPage.ChildPage|has attribute|Test| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddSuitePageTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddSuitePageTest/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddSuitePageTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddTestPageTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddTestPageTest/content.txt new file mode 100644 index 0000000..ff9ceb8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddTestPageTest/content.txt @@ -0,0 +1,6 @@ +!|script| +|given page|ParentPage| +|add child page|ChildPage|of type|Test|containing|child content|to parent page|ParentPage|should return Redirect| +|page|ParentPage.ChildPage|should contain|child content| +|ensure|page|ParentPage.ChildPage|has attribute|Test| +|reject|page|ParentPage.ChildPage|has attribute|Suite| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddTestPageTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddTestPageTest/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/AddTestPageTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/CantAddChildWithNoNameTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/CantAddChildWithNoNameTest/content.txt new file mode 100644 index 0000000..99248b8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/CantAddChildWithNoNameTest/content.txt @@ -0,0 +1,3 @@ +!|script| +|given page|ParentPage| +|add child page||containing|child content|to parent page|ParentPage|should return BadRequest| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/CantAddChildWithNoNameTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/CantAddChildWithNoNameTest/properties.xml new file mode 100644 index 0000000..3e87512 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/CantAddChildWithNoNameTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/ScenarioLibrary/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/ScenarioLibrary/content.txt new file mode 100644 index 0000000..2102c09 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/ScenarioLibrary/content.txt @@ -0,0 +1,17 @@ +!|scenario|add child page|page|containing|content|to parent page|parentPage|should return Redirect| +|add child page|@page|containing|@content|to parent page|@parentPage|should return|303| + +!|scenario|add child page|page|containing|content|to parent page|parent page|should return Not Found| +|add child page|@page|containing|@content|to parent page|@parentPage|should return|404| + +!|scenario|add child page|page|containing|content|to parent page|parent page|should return BadRequest| +|add child page|@page|containing|@content|to parent page|@parentPage|should return|400| + +!|scenario|add child page|page|containing|content|to parent page|parent page|should return|return code| +|add child page|@page|of type|Default|containing|@content|to parent page|@parentPage|should return|@returnCode| + +!|scenario|add child page|page|of type|type|containing|content|to parent page|parent page|should return Redirect| +|add child page|@page|of type|@type|containing|@content|to parent page|@parentPage|should return|303| + +!|scenario|add child page|page|of type|type|containing|content|to parent page|parent page|should return|return code| +|check|request page|@parentPage?addChild&pageName=@page&pageContent=@content&pageType=@type|@returnCode| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/ScenarioLibrary/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/ScenarioLibrary/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/ScenarioLibrary/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/SetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/SetUp/content.txt new file mode 100644 index 0000000..d0ca815 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/SetUp/content.txt @@ -0,0 +1,4 @@ +!include + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/content.txt new file mode 100644 index 0000000..128a716 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/content.txt @@ -0,0 +1,3 @@ +!contents -p -g + +!define TEST_SYSTEM {slim} \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/properties.xml new file mode 100644 index 0000000..e475416 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/AddChildResponderSuite/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteFileSection/TestFileSectionOrder/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteFileSection/TestFileSectionOrder/content.txt new file mode 100644 index 0000000..b18667f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteFileSection/TestFileSectionOrder/content.txt @@ -0,0 +1,47 @@ +!The directory listing in the files section displays directories in alphabetical order - directories first, then files. + +Create the file section +|file section|setup| + +Add some files +|file section file adder| +|path|type|valid?| +|cFile.txt|file|true| +|dDir|dir|true| +|cDir|dir|true| +|bFile.txt|file|true| +|dFile.txt|file|true| +|bDir|dir|true| +|aFile.txt|file|true| +|aDir|dir|true| + +Verify that it's present through the file system +|query:file section directory listing| +|path| +|aFile.txt| +|bFile.txt| +|cFile.txt| +|dFile.txt| +|aDir| +|bDir| +|cDir| +|dDir| +| testResults | + +Now request the directory through fitnesse +|Response Requester| +|uri|valid?|contents?| +|files/|true|| + +|Response Examiner| +|line|inOrder?| +||true| +||true| +||true| +||true| +||true| +||true| +||true| +||true| + +|file section|teardown| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteFileSection/TestFileSectionOrder/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteFileSection/TestFileSectionOrder/properties.xml new file mode 100644 index 0000000..a4fb30f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteFileSection/TestFileSectionOrder/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + 1229173159323 + -3028771371104973063 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteFileSection/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteFileSection/content.txt new file mode 100644 index 0000000..bdffdda --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteFileSection/content.txt @@ -0,0 +1,2 @@ +!contents -g -p +!define TEST_SYSTEM {slim} \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteFileSection/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteFileSection/properties.xml new file mode 100644 index 0000000..d5add12 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteFileSection/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestCantMovePageBeneathSelf/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestCantMovePageBeneathSelf/content.txt new file mode 100644 index 0000000..9dbe8d0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestCantMovePageBeneathSelf/content.txt @@ -0,0 +1,42 @@ +!3 We should ''not'' be able to move a page below one of it's children. + +First build a page, a child page to move, and a grandchild page to act as the target of the move + +|Page creator.| +|Page name. |Page contents. |valid?| +|!-ParentPage-! |x |true | +|!-ParentPage.ChildPage-! |child page |true | +|!-ParentPage.ChildPage.GrandchildPage-!|grandchild page| true | + +Then try to move the child page below the grandhild page. + +|Response Requester.| +|uri |status?| +|!-ParentPage.ChildPage?responder=movePage&newLocation=ParentPage.ChildPage.GrandchildPage-!|400| + +Make sure we get an error message. + +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|Cannot move|true|| + +Make sure the page didn't really move. + +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage.ChildPage-!|true|| + +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|child page|true|| + +Make sure that the grandchild page still exists + +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage.ChildPage.GrandchildPage-!|true|| + +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|grandchild page|true|| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestCantMovePageBeneathSelf/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestCantMovePageBeneathSelf/properties.xml new file mode 100644 index 0000000..c2b49f7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestCantMovePageBeneathSelf/properties.xml @@ -0,0 +1,14 @@ + + + + 20081213070045 + + + + + + + + 1229173245348 + -8080543676113160328 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMoveIncludedPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMoveIncludedPage/content.txt new file mode 100644 index 0000000..862c733 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMoveIncludedPage/content.txt @@ -0,0 +1,34 @@ +!3 When we move a page that is !included, the !include should be changed appropriately. + +First build a page, a subpage to move, and a target page to move it to. Then build a page that references the sub child to be moved. + +|Page creator.| +|Page name. |Page contents.|valid?| +|!-ParentPage-! |x |true | +|!-ParentPage.SubPage-!|sub page |true | +|!-NewParentPage-! |x |true | +|!-ReferingPage-! |!-!include ParentPage.SubPage-!|true | + +Then move the sub page. + +|Response Requester.| +|uri |status?| +|!-ParentPage.SubPage?responder=movePage&newLocation=NewParentPage&refactorReferences=on-!|| + +Make sure that the refering page now !includes the old page at the new location. + +|Response Requester.| +|uri|valid?|contents?| +|!-ReferingPage-!|true|| + +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|!-.NewParentPage.SubPage-!|true|| + +|Response Examiner.| +|type |pattern|matches?| +|contents|sub page|true| + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMoveIncludedPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMoveIncludedPage/properties.xml new file mode 100644 index 0000000..08d79b1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMoveIncludedPage/properties.xml @@ -0,0 +1,14 @@ + + + + 20081213070132 + + + + + + + + 1229173292214 + -6812717968966184168 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageInsideItself/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageInsideItself/content.txt new file mode 100644 index 0000000..6b619cc --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageInsideItself/content.txt @@ -0,0 +1,21 @@ +!c !3 BUG! submitted by Etienne Charignon +!c !3 When you attempt to move a page inside of itself, you should get an error message. +!c ''prior to fix, an endless number of nested pages, all with the same name, would get created untill the os complained.'' + +First build a page to move. + +!|Page creator.| +|Page name. |Page contents.|valid?| +|TestPage| some content |true | + +Then try to move the sub page inside itself. We should get an error (400). + +!|Response Requester.| +|uri |status?| +|TestPage?responder=movePage&newLocation=TestPage|400| + +We should be told that we cannot move the page. + +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|Cannot move|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageInsideItself/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageInsideItself/properties.xml new file mode 100644 index 0000000..89ddc24 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageInsideItself/properties.xml @@ -0,0 +1,14 @@ + + + + 20081213070206 + + + + + + + + 1229173326636 + 2417633247891792140 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageThreeLevelsDown/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageThreeLevelsDown/content.txt new file mode 100644 index 0000000..0cc38ce --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageThreeLevelsDown/content.txt @@ -0,0 +1,40 @@ +!3 BUG. There was a problem when moving a page that was three or more levels down from the root. Moving A.B.C to A.D. + +First build a page, a subpage to move, and a target page to move it to. + +!|Page creator.| +|Page name. |Page contents. |valid?| +|ParentPageAy |>ChildBee |true | +|ParentPageAy.ChildBee |>ChildCee |true | +|ParentPageAy.ChildDee |page D |true | +|ParentPageAy.ChildBee.ChildCee|page C |true | + +The bug seems to make !-ChildBee-! disapear, so let's see if it's there now. + +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPageAy.ChildBee-!|true|| + +Then move the sub page. + +|Response Requester.| +|uri |status?| +|!-ParentPageAy.ChildBee.ChildCee?responder=movePage&newLocation=ParentPageAy.ChildDee&refactorReferences=on-!|| + +Next fetch old parent page and make sure the reference has been changed. + +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPageAy.ChildBee-!|true|| + +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|!-ParentPageAy.ChildDee.ChildCee-!|true|| + +Make sure we can't get the old A.B.C page. Use the !-dontCreatePage-! query to suppress default creation of a non-existent page. + +|Response Requester.| +|uri|valid?|status?| +|!-ParentPageAy.ChildBee.ChildCee?getPage&dontCreatePage-!|false|404| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageThreeLevelsDown/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageThreeLevelsDown/properties.xml new file mode 100644 index 0000000..be5e729 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageThreeLevelsDown/properties.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + 1229173359731 + -2531277103673867547 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithAbsoluteInternalReference/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithAbsoluteInternalReference/content.txt new file mode 100644 index 0000000..f2cad25 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithAbsoluteInternalReference/content.txt @@ -0,0 +1,27 @@ +!3 When we move a page from one location to another, all references to that page should be changed. +This includes absolute references on the parent page. + +First build a page, a subpage to move, and a target page to move it to. + +|Page creator.| +|Page name. |Page contents.|valid?| +|!-ParentPage-! |!-.ParentPage.SubPage-! |true | +|!-ParentPage.SubPage-!|sub page |true | +|!-NewParentPage-! |x |true | +|!-ReferingPage-! |!-ParentPage.SubPage-!|true | + +Then move the sub page. + +|Response Requester.| +|uri |status?| +|!-ParentPage.SubPage?responder=movePage&newLocation=NewParentPage&refactorReferences=on-!|| + +Next fetch old parent page and make sure the reference has been changed. + +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage-!|true|| + +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|!-NewParentPage.SubPage-!|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithAbsoluteInternalReference/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithAbsoluteInternalReference/properties.xml new file mode 100644 index 0000000..8686a41 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithAbsoluteInternalReference/properties.xml @@ -0,0 +1,14 @@ + + + + 20081213070313 + + + + + + + + 1229173393012 + 5325341333142260574 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithExternalReference/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithExternalReference/content.txt new file mode 100644 index 0000000..0cce500 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithExternalReference/content.txt @@ -0,0 +1,47 @@ +!3 When we move a page from one location to another, all references to that page should be changed. + +First build a page, a subpage to move, and a target page to move it to. Then build a page that references the sub child to be moved. + +|Page creator.| +|Page name. |Page contents.|valid?| +|!-ParentPage-! |x |true | +|!-ParentPage.SubPage-!|sub page |true | +|!-NewParentPage-! |x |true | +|!-ReferingPage-! |!-ParentPage.SubPage-!|true | + +Then move the sub page. + +|Response Requester.| +|uri |status?| +|!-ParentPage.SubPage?responder=movePage&newLocation=NewParentPage&refactorReferences=on-!|| + +Next fetch the moved page. + +|Response Requester.| +|uri|valid?|contents?| +|!-NewParentPage.SubPage-!|true|| + +Make sure that the sub page can be referenced in it's new location. + +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|sub page|true|| + +Make sure that there is no sub page beneath !-ParentPage-!. + +!|Response Requester.| +|uri|valid?|contents?| +|ParentPage.SubPage?getPage&dontCreatePage|false|| + +Finally, make sure that the refering page now refers to the new location. + +|Response Requester.| +|uri|valid?|contents?| +|!-ReferingPage-!|true|| + +!|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|NewParentPage.SubPage|true|| + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithExternalReference/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithExternalReference/properties.xml new file mode 100644 index 0000000..7f9e404 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithExternalReference/properties.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + 1229173436909 + -1519214265074850152 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithManyLevelsOfSubPages/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithManyLevelsOfSubPages/content.txt new file mode 100644 index 0000000..7859644 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithManyLevelsOfSubPages/content.txt @@ -0,0 +1,24 @@ +!3 BUG. Given A.B.C.D, moving A.B to A.E causes C and D to be deleted. + +First build a page, a subpage to move, sub pages of the sub page, and a target page to move it to. + +|Page creator.| +|Page name. |Page contents. |valid?| +|!-ParentPage-! |x |true | +|!-ParentPage.ChildPage-! |child page |true | +|!-ParentPage.ChildPage.GrandchildPage-!|grandchild page| true | +|!-NewParentPage-! |x |true | + +Then move the entire tree beneath the target page. + +|Response Requester.| +|uri |status?| +|!-ParentPage?responder=movePage&newLocation=NewParentPage-!|| + +Next fetch the moved page, and each of it's children. They should all be there. + +|Response Requester.| +|uri|valid?|contents?| +|!-NewParentPage.ParentPage-!|true|| +|!-NewParentPage.ParentPage.ChildPage-!|true|| +|!-NewParentPage.ParentPage.ChildPage.GrandchildPage-!|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithManyLevelsOfSubPages/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithManyLevelsOfSubPages/properties.xml new file mode 100644 index 0000000..e45e98b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithManyLevelsOfSubPages/properties.xml @@ -0,0 +1,12 @@ + + + + 20060717210050 + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithRelativeInternalReference/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithRelativeInternalReference/content.txt new file mode 100644 index 0000000..409ca56 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithRelativeInternalReference/content.txt @@ -0,0 +1,27 @@ +!3 When we move a page from one location to another, all references to that page should be changed. +This includes relative references on the parent page. + +First build a page, a subpage to move, and a target page to move it to. + +|Page creator.| +|Page name. |Page contents.|valid?| +|!-ParentPage-! |!->SubPage-! |true | +|!-ParentPage.SubPage-!|sub page |true | +|!-NewParentPage-! |x |true | +|!-ReferingPage-! |!-ParentPage.SubPage-!|true | + +Then move the sub page. + +|Response Requester.| +|uri |status?| +|!-ParentPage.SubPage?responder=movePage&newLocation=NewParentPage&refactorReferences=on-!|| + +Next fetch old parent page and make sure the reference has been changed. + +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage-!|true|| + +!|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|.NewParentPage.SubPage|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithRelativeInternalReference/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithRelativeInternalReference/properties.xml new file mode 100644 index 0000000..d02ac30 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithRelativeInternalReference/properties.xml @@ -0,0 +1,14 @@ + + + + 20081213070603 + + + + + + + + 1229173563059 + 3592052480559424762 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithSubPages/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithSubPages/content.txt new file mode 100644 index 0000000..d129b79 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithSubPages/content.txt @@ -0,0 +1,45 @@ +!3 We should be able to move a page that has sub pages from one location to another. The sub pages should move with the page. + +First build a page, a subpage to move, sub pages of the sub page, and a target page to move it to. + +|Page creator.| +|Page name. |Page contents. |valid?| +|!-ParentPage-! |x |true | +|!-ParentPage.ChildPage-! |child page |true | +|!-ParentPage.ChildPage.GrandchildPage-!|grandchild page| true | +|!-NewParentPage-! |x |true | + +Then move that page. + +|Response Requester.| +|uri |status?| +|!-ParentPage.ChildPage?responder=movePage&newLocation=NewParentPage-!|| + +Next fetch the moved page. + +|Response Requester.| +|uri|valid?|contents?| +|!-NewParentPage.ChildPage-!|true|| + +Make sure that the sub page can be referenced in it's new location. + +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|child page|true|| + +Make sure that the grandchild page can be referenced in its new location + +|Response Requester.| +|uri|valid?|contents?| +|!-NewParentPage.ChildPage.GrandchildPage-!|true|| + +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|grandchild page|true|| + +Make sure that there is no sub page beneath !-ParentPage-!. + +!|Response Requester.| +|uri|valid?|contents?| +|ParentPage.SubPage?getPage&dontCreatePage|false|| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithSubPages/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithSubPages/properties.xml new file mode 100644 index 0000000..cf849b3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithSubPages/properties.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + 1229173607134 + 983046216905103268 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithSymlinks/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithSymlinks/content.txt new file mode 100644 index 0000000..30c3000 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithSymlinks/content.txt @@ -0,0 +1,40 @@ +!contents + +If a symlink is created on the to-be-moved page, the symlink should be moved. + +!*> local setup and scenario's +| library | +| page driver | + +!| scenario | create symlink on | pageName | with name | name | link to | linkedPage | +| check | request page | @pageName?responder=symlink&linkName=@name&linkPath=@linkedPage | 303 | +| show | content | +| ensure | content contains | Location: /@pageName?properties | + +!| scenario | move page | pageName | to | location | +| check | request page | @pageName?responder=movePage&newLocation=@location | 303 | +| show | content | +| ensure | content contains | Location: /@location.@pageName | +*! + +Move a page. The page contains a symlink to a sibling page of the to-be moved page and a symlink to a child page of the to-be moved page. In both cases the pages should be moved in such a way that the symlink remain valid and point to the right page. + +!| script | +| create page | ToBeMovedPage | with content | main page | +| create page | ToBeMovedPage.ChildPage | with content | child page | +| create page | NewLocation | with content | new location | +| create page | AnotherPage | with content | another page | +| create symlink on | ToBeMovedPage | with name | LinkAnotherPage | link to | AnotherPage | +| create symlink on | ToBeMovedPage | with name | LinkChildPage | link to | >ChildPage | +| ensure | page | ToBeMovedPage.LinkAnotherPage | is a symbolic link | +| ensure | page | ToBeMovedPage.LinkChildPage | is a symbolic link | + +!| script | +| move page | ToBeMovedPage | to | NewLocation | +| reject | page | ToBeMovedPage | exists | +| ensure | page | NewLocation.ToBeMovedPage | exists | +| ensure | page | NewLocation.ToBeMovedPage.LinkAnotherPage | is a symbolic link | +| page | NewLocation.ToBeMovedPage.LinkAnotherPage | should contain | another page | +| ensure | page | NewLocation.ToBeMovedPage.LinkChildPage | is a symbolic link | +| page | NewLocation.ToBeMovedPage.LinkChildPage | should contain | child page | + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithSymlinks/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithSymlinks/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMovePageWithSymlinks/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMoveToNonExistentPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMoveToNonExistentPage/content.txt new file mode 100644 index 0000000..1b24243 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMoveToNonExistentPage/content.txt @@ -0,0 +1,29 @@ +!3 When you try to move a page under a parent that does not exist, you should get a nice error message. + +!3 We should be able to move a page from one location to another. + +First build a page, a subpage to move, but ''no'' target page to move it to. + +|Page creator.| +|Page name. |Page contents.|valid?| +|!-ParentPage-! |x |true | +|!-ParentPage.SubPage-!|sub page |true | + +Then try move that page to a non-existent target.. + +|Response Requester.| +|uri |status?| +|!-ParentPage.SubPage?responder=movePage&newLocation=NewParentPage-!|400| + +Make sure we get an error message. + +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|Cannot move|true|| + +Make sure that the sub page is still beneath !-ParentPage-!. + +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage.SubPage-!|true|| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMoveToNonExistentPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMoveToNonExistentPage/properties.xml new file mode 100644 index 0000000..d0db4da --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestMoveToNonExistentPage/properties.xml @@ -0,0 +1,14 @@ + + + + 20081213070714 + + + + + + + + 1229173634771 + 8938240666381501125 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestReferencesOfChildOfMovedPageAreRenamed/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestReferencesOfChildOfMovedPageAreRenamed/content.txt new file mode 100644 index 0000000..73e9ccd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestReferencesOfChildOfMovedPageAreRenamed/content.txt @@ -0,0 +1,41 @@ +!3 BUG: When moving a page that has children, references to the children are not renamed properly. + +Given: A.B.C.E, Move A.B.C to A.D. References to A.B.C.E should be renamed to A.D.C.E + +|Page creator.| +|Page name. |Page contents. |valid?| +|!-ReferencePage-! |!-ParentPageAy.ChildBee.ChildCee.ChildEee-!|true| +|!-ParentPageAy-! |!-^ChildBee-! |true | +|!-ParentPageAy.ChildBee-! |!-^ChildCee-! |true | +|!-ParentPageAy.ChildBee.ChildCee-! |page C |true | +|!-ParentPageAy.ChildBee.ChildCee.ChildEee-!|Page E |true | +|!-ParentPageAy.ChildDee-! |page D |true | + +Then move the sub page. + +|Response Requester.| +|uri |status?| +|!-ParentPageAy.ChildBee.ChildCee?responder=movePage&newLocation=ParentPageAy.ChildDee&refactorReferences=on-!|| + +Next fetch reference page and make sure the reference has been changed. + +|Response Requester.| +|uri|valid?|contents?| +|!-ReferencePage-!|true|| + +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|!-ParentPageAy.ChildDee.ChildCee.ChildEee-!|true|| + +Make sure we can't get the old A.B.C page. + +!|Response Requester.| +|uri|valid?|status?| +|ParentPageAy.ChildBee.ChildCee?getPage&dontCreatePage|false|| + +Make sure we ''can'' get the A.D.C.E page at it's new location. + +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPageAy.ChildDee.ChildCee.ChildEee-!|true|| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestReferencesOfChildOfMovedPageAreRenamed/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestReferencesOfChildOfMovedPageAreRenamed/properties.xml new file mode 100644 index 0000000..6d7100a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestReferencesOfChildOfMovedPageAreRenamed/properties.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + 1229173661174 + -3944826000450782680 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestSimpleMove/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestSimpleMove/content.txt new file mode 100644 index 0000000..875258a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestSimpleMove/content.txt @@ -0,0 +1,34 @@ +!3 We should be able to move a page from one location to another. + +First build a page, a subpage to move, and a target page to move it to. + +|Page creator.| +|Page name. |Page contents.|valid?| +|!-ParentPage-! |x |true | +|!-ParentPage.SubPage-!|sub page |true | +|!-NewParentPage-! |x |true | + +Then move that page. + +|Response Requester.| +|uri |status?| +|!-ParentPage.SubPage?responder=movePage&newLocation=NewParentPage-!|| + +Next fetch the moved page. + +|Response Requester.| +|uri|valid?|contents?| +|!-NewParentPage.SubPage-!|true|| + +Make sure that the sub page can be referenced in it's new location. + +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|sub page|true|| + +Make sure that there is no sub page beneath !-ParentPage-!. + +!|Response Requester.| +|uri|valid?|contents?| +|ParentPage.SubPage?getPage&dontCreatePage|false|| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestSimpleMove/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestSimpleMove/properties.xml new file mode 100644 index 0000000..aef3dfe --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/TestSimpleMove/properties.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + 1229173686453 + -8466104856830441988 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/content.txt new file mode 100644 index 0000000..3e614d0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/content.txt @@ -0,0 +1,5 @@ +!3 This Suite specifies the behavior of the move responder. + +The move responder is invoked with the ''movePage'' url. This url has an argument named ''newPageLocation'' that holds the name of the new parent of the page. Thus the url:{{{http://localhost/SomePage?responder=movePage&newLocation=NewPage}}} will move''!-SomePage-!'' beneath ''!-NewPage-!'' + +!contents -g \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/properties.xml new file mode 100644 index 0000000..0d3ee5d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteMoveResponder/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuitePropertiesResponder/TestPropertyCheckboxesArePresent/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuitePropertiesResponder/TestPropertyCheckboxesArePresent/content.txt new file mode 100644 index 0000000..be5bef3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuitePropertiesResponder/TestPropertyCheckboxesArePresent/content.txt @@ -0,0 +1,46 @@ +!3 Each page has links in the left rail. This test verifies the default set of links. + +Create a page. +|Page creator.| +|Page name.|Page contents.|valid?| +|!-SomePage-!|any page at all|true| + +Request the page +!|Response Requester.| +|uri|valid?| +|SomePage?properties|true| + +Ensure that the Page type radios are present +!|Response Examiner.| +|type|pattern|matches?| +|contents|Page type:|true| +|contents||true| +|contents||true| +|contents||true| +|contents||true| + +Ensure that the Action links are present +!|Response Examiner.| +|type|pattern|matches?| +|contents|Actions:|true| +|contents||true| +|contents||true| +|contents||true| +|contents||true| +|contents||true| + +Ensure that the Navigation links are present +!|Response Examiner.| +|type|pattern|matches?| +|contents|Navigation:|true| +|contents||true| +|contents||true| +|contents||true| + +Ensure that the Security links are present +!|Response Examiner.| +|type|pattern|matches?| +|contents|Security:|true| +|contents||true| +|contents||true| +|contents||true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuitePropertiesResponder/TestPropertyCheckboxesArePresent/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuitePropertiesResponder/TestPropertyCheckboxesArePresent/properties.xml new file mode 100644 index 0000000..e2de44d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuitePropertiesResponder/TestPropertyCheckboxesArePresent/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + 1235158706748 + -2937605021692999419 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuitePropertiesResponder/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuitePropertiesResponder/content.txt new file mode 100644 index 0000000..f0e96e5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuitePropertiesResponder/content.txt @@ -0,0 +1 @@ +!contents \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuitePropertiesResponder/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuitePropertiesResponder/properties.xml new file mode 100644 index 0000000..a317072 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuitePropertiesResponder/properties.xml @@ -0,0 +1,12 @@ + + + + 20060717210052 + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestProtectedWidgetsAreNotRenamed/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestProtectedWidgetsAreNotRenamed/content.txt new file mode 100644 index 0000000..9d039e6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestProtectedWidgetsAreNotRenamed/content.txt @@ -0,0 +1,42 @@ +!3 Only true page references should be changed during a rename. + +There are several widgets that contains strings that might match the pattern for a wiki word. When +a page is renamed, those strings should not be affected. + +First build a page with lots of these ''protected'' widgets. + +!|script|Page Builder| +|line|!-!path TargetPage-!| +|line|!-http://objectmentor.com/TargetPage-!| +|line|!-!img http://objectmentor.com/TargetPage.jpg-!| +|line|!-{{{TargetPage}}}-!| +|line|!-# TargetPage-!| +|line|!- !-TargetPage-! -!| +|line|this link should be renamed !-TargetPage-!| +|page|!-ProtectedWidgetPage-!| + +Next create the target page. + +|Page creator.| +|Page name.|Page contents.|valid?| +|!-TargetPage-!|whatever|true| + +Then rename that page. + +|Response Requester.| +|uri |status?| +|!-TargetPage?responder=renamePage&newName=RenamedPage&refactorReferences=on-!|| + +Next fetch the page. + +|Response Requester.| +|uri|valid?|contents?| +|!-ProtectedWidgetPage-!|true|| + +Make sure that the new page name does not appear. + +|Response Examiner.| +|type |pattern|matchCount?|wrapped html?| +|contents|!-RenamedPage</a>-!|1|| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestProtectedWidgetsAreNotRenamed/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestProtectedWidgetsAreNotRenamed/properties.xml new file mode 100644 index 0000000..8a51bde --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestProtectedWidgetsAreNotRenamed/properties.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + 1229653754358 + -1142268299964872099 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameChildPageWithAbsoluteReference/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameChildPageWithAbsoluteReference/content.txt new file mode 100644 index 0000000..da596c0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameChildPageWithAbsoluteReference/content.txt @@ -0,0 +1,29 @@ +!3 When a page is renamed, any links to that page from subpages pages are changed. + +First build parent & child pages where one refers to the other. + +|Page creator.| +|Page name.|Page contents.|valid?| +|!-ParentPage-!|!-refer to .ParentPage.ChildPage-!|true| +|!-ParentPage.ChildPage-!|whatever |true| + +Then rename the target page. + +|Response Requester.| +|uri |status?| +|!-ParentPage.ChildPage?responder=renamePage&newName=NewChild&refactorReferences=on-!|| + +Next fetch the Source page. + +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage-!|true|| + +Make sure that the new target name is present and that the old name is not. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-href="ParentPage\.NewChild"-!|true| +|contents|!-ParentPage\.ChildPage-!|false| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameChildPageWithAbsoluteReference/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameChildPageWithAbsoluteReference/properties.xml new file mode 100644 index 0000000..ae275e7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameChildPageWithAbsoluteReference/properties.xml @@ -0,0 +1,15 @@ + + + + 20081020135127 + docs + + + + + + + + 1153177686974 + -9094752150551407051 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameChildPageWithSiblingReference/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameChildPageWithSiblingReference/content.txt new file mode 100644 index 0000000..6314c27 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameChildPageWithSiblingReference/content.txt @@ -0,0 +1,41 @@ +!3 When a page is renamed, any links to that page from subpages pages are changed. + +First build parent & child pages where one refers to the other. + +|Page creator.| +|Page name.|Page contents.|valid?| +|!-ParentPage-!|!-refer to nothing-!|true| +|!-ParentPage.BrotherPage-!|!-you are my SisterPage-!|true| +|!-ParentPage.SisterPage-!|!- thanks brother, love SisterPage-!|true| + +Then rename the target page. + +|Response Requester.| +|uri |status?| +|!-ParentPage.SisterPage?responder=renamePage&newName=NewSister&refactorReferences=on-!|| + +Next fetch the Source page. + +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage.BrotherPage-!|true|| + +Make sure that the new target name is present and that the old name is not. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-NewSister-!|true| +|contents|!-SisterPage-!|false| + +Next fetch the Target page. + +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage.NewSister-!|true|| + +Make sure that the new target name is present and that the old name is not. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-NewSister-!|true| +|contents|!-SisterPage-!|false| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameChildPageWithSiblingReference/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameChildPageWithSiblingReference/properties.xml new file mode 100644 index 0000000..7dfec14 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameChildPageWithSiblingReference/properties.xml @@ -0,0 +1,15 @@ + + + + 20081020135127 + docs + + + + + + + + 1153177659589 + -7332162283628447721 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameDoesNotMove/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameDoesNotMove/content.txt new file mode 100644 index 0000000..0b582f6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameDoesNotMove/content.txt @@ -0,0 +1,33 @@ +!3 A page may ''not'' be renamed to a name with dots in it. +!3 Another way of saying this is that renaming a page does not change it's position. + +First build the page to rename, and another page to try to move it beneath. + +|Page creator.| +|Page name.|Page contents.|valid?| +|!-MyPage-!|X|true| +|!-TargetPage-!|X|true| + +Then rename that page. + +|Response Requester.| +|uri |status?| +|!-MyPage?responder=renamePage&newName=TargetPage.SomePage-!|400| + +Make sure that we got an error message. + +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|Cannot rename|true|| + +The renamed page should not exist. + +!|Response Requester.| +|uri|valid?| +|TargetPage.SomePage?getPage&dontCreatePage|false| + +The old page should still exist. + +|Response Requester.| +|uri|valid?|contents?| +|!-MyPage-!|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameDoesNotMove/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameDoesNotMove/properties.xml new file mode 100644 index 0000000..308b285 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameDoesNotMove/properties.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + 1229173753030 + -8487183569734544471 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameMovesChildPages/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameMovesChildPages/content.txt new file mode 100644 index 0000000..c1a414f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameMovesChildPages/content.txt @@ -0,0 +1,27 @@ +!c !3 When a page is renamed all of its child pages remain intact. + +First build the page with children. + +!|Page creator.| +|Page name.|Page contents.|valid?| +|ParentPage|parent|true| +|ParentPage.ChildPage|child page|true| + +Then rename the parent page. + +!|Response Requester.| +|uri |status?| +|ParentPage?responder=renamePage&newName=NewParentPage|| + +Next fetch the child page using the parent's new name. + +!|Response Requester.| +|uri|valid?|contents?| +|NewParentPage.ChildPage|true|| + +The child page's content should be the same. + +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|child page|true|| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameMovesChildPages/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameMovesChildPages/properties.xml new file mode 100644 index 0000000..bd93928 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameMovesChildPages/properties.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + 1229173773698 + -7178127820410324012 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageThatRefersToItself/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageThatRefersToItself/content.txt new file mode 100644 index 0000000..e05f1f3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageThatRefersToItself/content.txt @@ -0,0 +1,33 @@ +!3 When a page is renamed, any internal links to that page are changed. + +If you have a page that refers to itself, then its internal references will be changed. + +First build the page with a self reference. + +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-MyPage-!|!-refer to self MyPage-!||true| + +Then rename that page. + +|Response Requester.| +|uri |status?| +|!-MyPage?responder=renamePage&newName=ThePage&refactorReferences=on-!|| + +Next fetch the page. + +|Response Requester.| +|uri|valid?|contents?| +|!-ThePage-!|true|| + +Make sure that the new name is present and that the old name is not. + +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|!-ThePage-!|true|| + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-MyPage-!|false| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageThatRefersToItself/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageThatRefersToItself/properties.xml new file mode 100644 index 0000000..24758dc --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageThatRefersToItself/properties.xml @@ -0,0 +1,14 @@ + + + + 20081213070957 + + + + + + + + 1229173797158 + 969063307704892573 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasAbsoluteReference/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasAbsoluteReference/content.txt new file mode 100644 index 0000000..5a17409 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasAbsoluteReference/content.txt @@ -0,0 +1,29 @@ +!3 When a page is renamed, any alias links that use absolute references to subpages are changed. + +First build parent & child pages where one refers to the other. + +|Page creator.| +|Page name.|Page contents.|valid?| +|!-ParentPage-!|!-refer to [[link][.ParentPage.ChildPage]]-!|true| +|!-ParentPage.ChildPage-!|whatever |true| + +Then rename the target page. + +|Response Requester.| +|uri |status?| +|!-ParentPage.ChildPage?responder=renamePage&newName=NewChild&refactorReferences=on-!|| + +Next fetch the Source page. + +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage-!|true|| + +Make sure that the new target name is present and that the old name is not. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-href="ParentPage\.NewChild"-!|true| +|contents|!-ChildPage-!|false| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasAbsoluteReference/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasAbsoluteReference/properties.xml new file mode 100644 index 0000000..2559067 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasAbsoluteReference/properties.xml @@ -0,0 +1,15 @@ + + + + 20081020135127 + docs + + + + + + + + 1153182710779 + -1727734104643571115 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasLinkReference/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasLinkReference/content.txt new file mode 100644 index 0000000..8e92779 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasLinkReference/content.txt @@ -0,0 +1,28 @@ +!3 When a page is renamed, any alias links to that page from sibling pages are changed. + +First build pages where one refers to the other. + +|Page creator.| +|Page name.|Page contents.|valid?| +|!-SourcePage-!|!-refer to [[link][TargetPage]]-!|true| +|!-TargetPage-!|whatever|true| + +Then rename the target page. + +|Response Requester.| +|uri |status?| +|!-TargetPage?responder=renamePage&newName=NewTarget&refactorReferences=on-!|| + +Next fetch the Source page. + +|Response Requester.| +|uri|valid?|contents?| +|!-SourcePage-!|true|| + +Make sure that the new target name is present and that the old name is not. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-href="NewTarget"-!|true| +|contents|!-TargetPage-!|false| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasLinkReference/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasLinkReference/properties.xml new file mode 100644 index 0000000..f5b587f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasLinkReference/properties.xml @@ -0,0 +1,15 @@ + + + + 20081020135127 + docs + + + + + + + + 1153182700981 + 4625139863425684684 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasSubLinkReference/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasSubLinkReference/content.txt new file mode 100644 index 0000000..66f3418 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasSubLinkReference/content.txt @@ -0,0 +1,29 @@ +!3 When a page is renamed, any alias links that are using subpages are changed. + +First build parent & child pages where one refers to the other. + +|Page creator.| +|Page name.|Page contents.|valid?| +|!-ParentPage-!|!-refer to [[link][^ChildPage]]-!|true| +|!-ParentPage.ChildPage-!|whatever |true| + +Then rename the target page. + +|Response Requester.| +|uri |status?| +|!-ParentPage.ChildPage?responder=renamePage&newName=NewChild&refactorReferences=on-!|| + +Next fetch the Source page. + +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage-!|true|| + +Make sure that the new target name is present and that the old name is not. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-href="ParentPage\.NewChild"-!|true| +|contents|!-ChildPage-!|false| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasSubLinkReference/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasSubLinkReference/properties.xml new file mode 100644 index 0000000..d1c1007 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithAliasSubLinkReference/properties.xml @@ -0,0 +1,15 @@ + + + + 20081020135127 + docs + + + + + + + + 1153182689488 + -3016663024832079308 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithBackwardsSearchReference/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithBackwardsSearchReference/content.txt new file mode 100644 index 0000000..5840ec8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithBackwardsSearchReference/content.txt @@ -0,0 +1,47 @@ +!3 When a page is renamed, any links to that page from backwards references pages are changed. + +Create the test data. + +!|Page creator.| +|Page name.|Page contents.|valid?| +|TopPage||true| +|TopPage.TargetPage||true| +|TopPage.MiddlePage||true| +|TopPage.MiddlePage.MiddleTarget||true| +|TopPage.MiddlePage.ReferingPage||true| +|contents||true| + +Rename the middle page. + +!|Response Requester.| +|uri |status?| +|RenamedTopPage.MiddlePage?responder=renamePage&newName=RenamedMiddlePage&refactorReferences=on|| + +Next fetch the referring page. + +!|Response Requester.| +|uri|valid?|contents?| +|RenamedTopPage.RenamedMiddlePage.ReferingPage|true|| + +!|Response Examiner.| +|type |pattern|matches?| +|contents||true| +|contents||true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithBackwardsSearchReference/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithBackwardsSearchReference/properties.xml new file mode 100644 index 0000000..5004894 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithBackwardsSearchReference/properties.xml @@ -0,0 +1,14 @@ + + + true + 20081213071101 + true + true + true + true + true + true + true + 1229173861834 + -7370650774892217411 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithSiblingReference/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithSiblingReference/content.txt new file mode 100644 index 0000000..6423301 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithSiblingReference/content.txt @@ -0,0 +1,31 @@ +!3 When a page is renamed, any links to that page on other pages are changed. + +If you have a page that refers to the renamed page, then that reference will be changed. + +First build sibling pages where one refers to the other + +|Page creator.| +|Page name.|Page contents.|valid?| +|!-SourcePage-!|!-refer to TargetPage-!|true| +|!-TargetPage-!|some page|true| + +Then rename the target page. + +|Response Requester.| +|uri |status?| +|!-TargetPage?responder=renamePage&newName=NewTarget&refactorReferences=on-!|| + +Next fetch the Source page. + +|Response Requester.| +|uri|valid?|contents?| +|!-SourcePage-!|true|| + +Make sure that the new target name is present and that the old name is not. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-NewTarget-!|true| +|contents|!-TargetPage-!|false| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithSiblingReference/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithSiblingReference/properties.xml new file mode 100644 index 0000000..b6ff3d4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithSiblingReference/properties.xml @@ -0,0 +1,15 @@ + + + + 20081020135127 + docs + + + + + + + + 1153182679458 + 1940290324349855192 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithSubpageReference/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithSubpageReference/content.txt new file mode 100644 index 0000000..e30cfb6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithSubpageReference/content.txt @@ -0,0 +1,30 @@ +!3 When a page is renamed, any links to that page from subpages pages are changed. + +First build parent & child pages where one refers to the other. + +!|Page creator.| +|Page name.|Page contents.|valid?| +|ParentPage|refer to >ChildPage|true| +|ParentPage.ChildPage|whatever|true| + +Then rename the target page. + +!|Response Requester.| +|uri |status?| +|ParentPage.ChildPage?responder=renamePage&newName=NewChild&refactorReferences=on|| + +Next fetch the Source page. + +!|Response Requester.| +|uri|valid?|contents?| +|ParentPage|true|| + +Make sure that the new target name is present and that the old name is not. + +!|Response Examiner.| +|type |pattern|matches?| +|contents|>NewChild|true| +|contents|href="ParentPage\.NewChild"|true| +|contents|>ChildPage|false| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithSubpageReference/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithSubpageReference/properties.xml new file mode 100644 index 0000000..7cdc61c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenamePageWithSubpageReference/properties.xml @@ -0,0 +1,14 @@ + + + + 20081213071135 + + + + + + + + 1229173895549 + -8056489792305985117 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameSymbolicPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameSymbolicPage/content.txt new file mode 100644 index 0000000..6b3020d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameSymbolicPage/content.txt @@ -0,0 +1,32 @@ +!contents + +If a symlink is created on the to-be-moved page, the symlink should be moved. + +!*> local setup and scenario's +| library | +| page driver | + +!| scenario | create symlink on | pageName | with name | name | link to | linkedPage | +| check | request page | @pageName?responder=symlink&linkName=@name&linkPath=@linkedPage | 303 | +| show | content | +| ensure | content contains | Location: /@pageName?properties | + +!| scenario | rename page | pageName | to | newPageName | +| check | request page | @pageName?responder=renamePage&newName=@newPageName | 303 | +| show | content | +| ensure | content contains | Location: /@newPageName | +*! + +Rename a page. The page contains a symlink to a sibling page of the to-be moved page and a symlink to a child page of the to-be moved page. In both cases the pages should be moved in such a way that the symlink remain valid and point to the right page. + +!| script | +| create page | AnotherPage | with content | another page | +| create symlink on | | with name | LinkAnotherPage | link to | AnotherPage | +| ensure | page | LinkAnotherPage | is a symbolic link | + +!| script | +| rename page | LinkAnotherPage | to | LinkSomeOtherPage | +| reject | page | LinkAnotherPage | exists | +| ensure | page | AnotherPage | exists | +| ensure | page | LinkSomeOtherPage | is a symbolic link | +| page | LinkSomeOtherPage | should contain | another page | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameSymbolicPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameSymbolicPage/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/TestRenameSymbolicPage/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/content.txt new file mode 100644 index 0000000..489a2fd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/content.txt @@ -0,0 +1,5 @@ +!3 This Suite specifies the behavior of the rename responder. + +The rename responder is invoked with the ''renamePage'' url. This url has an argument named ''newPageName'' that holds the new name of the page. Thus the url:{{{http://localhost/SomePage?responder=renamePage&newName=NewPage}}} will rename ''!-SomePage-!'' to ''!-NewPage-!'' + +!contents -g \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/properties.xml new file mode 100644 index 0000000..5cb407d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRenameResponder/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/ScenarioLibrary/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/ScenarioLibrary/content.txt new file mode 100644 index 0000000..78d8603 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/ScenarioLibrary/content.txt @@ -0,0 +1,22 @@ +!|scenario|and given page|page|with content|content| +|given page|@page|with content|@content| + +!|scenario|when replacing|searchString|with|replacementString|starting from|pageName| +|check|request page|@pageName?replace&searchString=@searchString&replacementString=@replacementString|200| +|$RESPONSE=|content| + +!|scenario|replacement response from|searchString|with|replacementString|should contain|contents| +|check|request page|$IT?replace&searchString=@searchString&replacementString=@replacementString|200| +|ensure|content contains|@contents| +|show|content| + +!|scenario|it should list|pageName| +|ensure|content contains|@pageName| +|show|content| + +!|scenario|and it should list|pageName| +|it should list|@pageName| + +!|scenario|and page|pageName|should contain|content| +|page|@pageName|should contain|@content| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/ScenarioLibrary/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/ScenarioLibrary/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/ScenarioLibrary/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/SetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/SetUp/content.txt new file mode 100644 index 0000000..ffb7cf1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/SetUp/content.txt @@ -0,0 +1,6 @@ +!include + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplaceContentsInPageHierarchy/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplaceContentsInPageHierarchy/content.txt new file mode 100644 index 0000000..8410d56 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplaceContentsInPageHierarchy/content.txt @@ -0,0 +1,17 @@ +!2 Test replacing text in a simple page hierarchy. +Replacing text in a page hierarchy should replace any matches found on all child pages. +---- + +!|script | +|given page |ParentPage |with content |some content | +|and given page |ParentPage.SubPage |with content |some other content | +|and given page |ParentPage.SubPage.ChildPage1|with content |non-matching page content | +|and given page |ParentPage.ChildPage2 |with content |some more matching content | +|when replacing |some |with |any|starting from|ParentPage| +|it should list |ParentPage | +|and it should list|ParentPage.SubPage | +|and it should list|ParentPage.ChildPage2 | +|and page |ParentPage |should contain|any content | +|and page |ParentPage.SubPage |should contain|any other content | +|and page |ParentPage.SubPage.ChildPage1|should contain|non-matching page content | +|and page |ParentPage.ChildPage2 |should contain|any more matching content | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplaceContentsInPageHierarchy/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplaceContentsInPageHierarchy/properties.xml new file mode 100644 index 0000000..d0b7fe1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplaceContentsInPageHierarchy/properties.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplacementWithPatternGroups/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplacementWithPatternGroups/content.txt new file mode 100644 index 0000000..e7ee9d5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplacementWithPatternGroups/content.txt @@ -0,0 +1,8 @@ +!2 Test replacing text using pattern groups. +This replacement uses regular expression and matching group to exchange two words in a some page content. +---- + +!|script | +|given page |SomePage |with content |group1 nogroup group2 | +|replacement response from|(group[^ ]*) nogroup (group[^ ]*)|with |$2 irrelevant $1|should contain|SomePage| +|page |SomePage |should contain|group2 irrelevant group1 | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplacementWithPatternGroups/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplacementWithPatternGroups/properties.xml new file mode 100644 index 0000000..bc6b57f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplacementWithPatternGroups/properties.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplacesContent/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplacesContent/content.txt new file mode 100644 index 0000000..5796be0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplacesContent/content.txt @@ -0,0 +1,8 @@ +!2 Test replacing text on a simple page. +The replacement should replace page contents of the current page when there are no other sibling pages. +---- + +!|script | +|given page |SomePage|with content |some content | +|replacement response from|some |with |any|should contain|SomePage| +|page |SomePage|should contain|any content | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplacesContent/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplacesContent/properties.xml new file mode 100644 index 0000000..bc6b57f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/TestReplacesContent/properties.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/content.txt new file mode 100644 index 0000000..f54b819 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/content.txt @@ -0,0 +1,8 @@ +The replacement responder is invoked with a url of the form {{{SomePage?replace&searchString=search&replacementString=replacement}}} +The search string thereby follows the convention from the [[Java API description][http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html]]. + +---- + + ^TestReplacesContent + ^TestReplacementWithPatternGroups + ^TestReplaceContentsInPageHierarchy diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/properties.xml new file mode 100644 index 0000000..2b30ee1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteReplaceResponder/properties.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRunResponder/TestLinearClassPath/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRunResponder/TestLinearClassPath/content.txt new file mode 100644 index 0000000..a0a9c29 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRunResponder/TestLinearClassPath/content.txt @@ -0,0 +1,26 @@ +When you execute a test page, !-FitNesse-! gathers up the classpaths prior to running the test. The classpaths are found in the !-!path-! widgets of the test page, and every ancestor of the test page. The paths are ordered so that paths found on the subpages come before paths found on their parents. +---- + +!|Library| +|echo fixture| + +!define PROPERTY_DISPLAY ( +&bang;define TEST_SYSTEM {slim} +!path classes +!path fitnesse-standalone.jar + +!|Import| +|fitnesse.fixtures| + +!|script|java properties| +|show|property|java.class.path| +) + +!|script|page driver| +|given page|ParentPage|with content|!path parentPath| + +-!|script| +|given page|ParentPage.TestPage|with content|${PROPERTY_DISPLAY}| + +-!|script| +|page|ParentPage.TestPage?test|should contain|classes${path.separator}fitnesse-standalone.jar${path.separator}parentPath| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRunResponder/TestLinearClassPath/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRunResponder/TestLinearClassPath/properties.xml new file mode 100644 index 0000000..3ced70c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRunResponder/TestLinearClassPath/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRunResponder/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRunResponder/content.txt new file mode 100644 index 0000000..b5fc481 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRunResponder/content.txt @@ -0,0 +1,3 @@ +The suite of tests that describe the behavior of the Run Responder. + +^TestLinearClassPath diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRunResponder/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRunResponder/properties.xml new file mode 100644 index 0000000..93a4265 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteRunResponder/properties.xml @@ -0,0 +1,8 @@ + + + + 20060717210057 + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/SamplePages/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/SamplePages/content.txt new file mode 100644 index 0000000..369b03c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/SamplePages/content.txt @@ -0,0 +1,7 @@ +Here are some sample pages. +|Page creator.| +|Page name.|Page contents. |valid?| +|!-PageAbc-! |This page has ABCs|true | +|!-XyzPage-! |A page with XYZ|true | +|!-BasePage-!|This is the base page| true| +|!-BasePage.ChildPage-!|This is the child page| true | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/SamplePages/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/SamplePages/properties.xml new file mode 100644 index 0000000..dc3995c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/SamplePages/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717210058 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestContentSearch/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestContentSearch/content.txt new file mode 100644 index 0000000..007444e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestContentSearch/content.txt @@ -0,0 +1,57 @@ +!c !2 Title Search + +Searches for the specified string in the content of every wiki page. +It's triggered by the following URL: + +http:///search?responder=search&searchType=content&searchString= + +!include SamplePages + +Search for a page !-PageAbc-! +|Response Requester.| +|uri |status?| +|!-search?responder=search&searchType=content&searchString=PageAbc-!|| + +Check for the proper title. +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|Content Search|true|| + +Since no page, not even !-PageAbc-! contains that content, no results will be returned. +|Response Examiner.| +|type |pattern|matches?| +|contents|!->PageAbc<-!|false| +|contents|No pages matched your search criteria.|true| + +Now search for ABC. +|Response Requester.| +|uri |status?| +|!-search?responder=search&searchType=content&searchString=ABC-!|| + +Make sure we get !-PageAbc-! in the result list. +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|!-PageAbc-!|true|| + +Now search for xyz. +|Response Requester.| +|uri |status?| +|!-search?responder=search&searchType=content&searchString=xyz-!|| + +Make sure we get !-XyzPage-! in the result list. Searches are case insensitive. +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|!-XyzPage-!|true|| + +Now search for the word page. +|Response Requester.| +|uri |status?| +|!-search?responder=search&searchType=content&searchString=page-!|| + +Make sure we get all 4 pages in the result list. +|Response Examiner.| +|type |pattern|matches?| +|contents|!-PageAbc-!|true| +|contents|!-XyzPage-!|true| +|contents|!-BasePage-!|true| +|contents|!-BasePage.ChildPage-!|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestContentSearch/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestContentSearch/properties.xml new file mode 100644 index 0000000..9860a02 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestContentSearch/properties.xml @@ -0,0 +1,9 @@ + + + + + + + 1229173941114 + -1364895840942415075 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestSearchForm/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestSearchForm/content.txt new file mode 100644 index 0000000..85383f7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestSearchForm/content.txt @@ -0,0 +1,21 @@ +!c !2 Search Form +Is located at http://-host-/...?searchForm + +Load the search form page + +|Response Requester. | +|uri |status?| +|!-?searchForm&nochunk-!|200 | + +Make sure where on the right page and that the form has all the proper text. + +|Response Examiner. | +|type |pattern |matches?|wrapped html?| +|contents|!-[<]title>Search Form[<]/title>-!|true | | + +|Response Examiner. | +|type |pattern |matches?| +|contents|document\.forms\[0\].searchString.focus\(\)|true | +|contents|Search Properties |true | +|contents|Search Titles |true | +|contents|Search Content |true | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestSearchForm/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestSearchForm/properties.xml new file mode 100644 index 0000000..43eed59 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestSearchForm/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + +1229173971996 +8771927365021069156 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestTitleSearch/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestTitleSearch/content.txt new file mode 100644 index 0000000..a427bb0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestTitleSearch/content.txt @@ -0,0 +1,56 @@ +!c !2 Title Search + +Searches for the specified string in all of the WikiPage title in the wiki. +It's triggered by the following URL: + +http:///search?responder=search&searchType=titles&searchString= + +!include SamplePages + +First let's perform a silly search. We'll look for a page named blah. +|Response Requester.| +|uri |status?| +|!-search?responder=search&searchType=titles&searchString=blah-!|| + +Let's make sure the titles in and information is correct. +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|!-Title Search Results for 'blah'-!|true|| + +Make sure we get !-PageAbc-! in the result list. +|Response Examiner.| +|type |pattern|matches?| +|contents|No pages matched your search criteria.|true| + +Now search for ABC. +|Response Requester.| +|uri |status?| +|!-search?responder=search&searchType=titles&searchString=ABC-!|| + +Make sure we get !-PageAbc-! in the result list. +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|!-PageAbc-!|true|| + +Now search for xyz. +|Response Requester.| +|uri |status?| +|!-search?responder=search&searchType=titles&searchString=xyz-!|| + +Make sure we get !-XyzPage-! in the result list. Searches are case insensitive. +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|!-XyzPage-!|true|| + +Now search for the word page. +|Response Requester.| +|uri |status?| +|!-search?responder=search&searchType=titles&searchString=page-!|| + +Make sure we get all 4 pages in the result list. +|Response Examiner.| +|type |pattern|matches?| +|contents|!-PageAbc-!|true| +|contents|!-XyzPage-!|true| +|contents|!-BasePage-!|true| +|contents|!-BasePage.ChildPage-!|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestTitleSearch/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestTitleSearch/properties.xml new file mode 100644 index 0000000..f9e3368 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/TestTitleSearch/properties.xml @@ -0,0 +1,9 @@ + + + + + + + 1229174034769 + 5592943275585048509 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/content.txt new file mode 100644 index 0000000..79d7847 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/content.txt @@ -0,0 +1,11 @@ +!c !2 Search Responder + +The search responder works in two fashions: Title Search and Content Search. + + ^TestSearchForm + ^TestTitleSearch + ^TestContentSearch + +---- +Includes: + ^SamplePages \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/properties.xml new file mode 100644 index 0000000..7e4eb1c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteSearchResponder/properties.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/DoTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/DoTest/content.txt new file mode 100644 index 0000000..6118360 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/DoTest/content.txt @@ -0,0 +1,23 @@ +Create a simple test page + +!|script|Page Builder | +|line |${SUT_PATH} | +|line |!-!|-!fitnesse.testutil.${FIXTURE_NAME}!-|-!| +|line |!-|blah|-! | +|page |!-TestPage-! | + +Now run the test page. + +|Response Requester. | +|uri |valid?| +|!-TestPage?responder=test-!|true | + +|Response Examiner.| +|contents? | +| | + +Check the status message. + +|Response Examiner. | +|type |pattern |matches?| +|contents|Execution Log|true | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/DoTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/DoTest/properties.xml new file mode 100644 index 0000000..081e7f4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/DoTest/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/TestErrorOccurred/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/TestErrorOccurred/content.txt new file mode 100644 index 0000000..6e15034 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/TestErrorOccurred/content.txt @@ -0,0 +1,7 @@ +When errors occur, we get the message: + * Errors Occurred + +!define FIXTURE_NAME {CrashFixture} +!define EXPECTED_STYLE {error} + +!include DoTest \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/TestErrorOccurred/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/TestErrorOccurred/properties.xml new file mode 100644 index 0000000..94161f1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/TestErrorOccurred/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/TestExecutedOk/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/TestExecutedOk/content.txt new file mode 100644 index 0000000..1485ddb --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/TestExecutedOk/content.txt @@ -0,0 +1,7 @@ +When everything works just fine we get the message: + * Tests Executed OK + +!define FIXTURE_NAME {PassFixture} +!define EXPECTED_STYLE {ok} + +!include DoTest \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/TestExecutedOk/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/TestExecutedOk/properties.xml new file mode 100644 index 0000000..a0c7922 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/TestExecutedOk/properties.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/content.txt new file mode 100644 index 0000000..ed37558 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/content.txt @@ -0,0 +1,6 @@ +The Execution Status Box shows how FIT behaved during test execution: + * Tests Executed OK + * Output Captured - if a FIT fixture wrote to an output stream + * Error Occurred - if a FIT fixture threw an unhandled exception + +!contents diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/properties.xml new file mode 100644 index 0000000..9b8fe5b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteExecutionStatusMessages/properties.xml @@ -0,0 +1,8 @@ + + + + 20060717210100 + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/DefinesFromSetupPagesShouldBeAvailableInTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/DefinesFromSetupPagesShouldBeAvailableInTest/content.txt new file mode 100644 index 0000000..dedfb67 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/DefinesFromSetupPagesShouldBeAvailableInTest/content.txt @@ -0,0 +1,6 @@ +Test case to ensure variables defined on the !-SetUp-! page (via !define) are available in the test. + +This test case covers !-FitNesse-! the regression as described in issue #249 ( https://github.com/unclebob/fitnesse/issues/249 ) + +| script | echo fixture | +| check | echo | foo | ${VariableUsedInTest} | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/DefinesFromSetupPagesShouldBeAvailableInTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/DefinesFromSetupPagesShouldBeAvailableInTest/properties.xml new file mode 100644 index 0000000..3e87512 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/DefinesFromSetupPagesShouldBeAvailableInTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/EmptySuiteSetUpAndTearDownShouldCountAsRightPages/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/EmptySuiteSetUpAndTearDownShouldCountAsRightPages/content.txt new file mode 100644 index 0000000..8fad3b4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/EmptySuiteSetUpAndTearDownShouldCountAsRightPages/content.txt @@ -0,0 +1,45 @@ +If a !-SuiteSetUp-! or !-SuiteTearDown-! page is eecuted without errors, it should be counted as a correctly executed page. + +!define TEST_SYSTEM {slim} + +!**< test content + +!define PATHS { +${SUT_PATH} +!-!define TEST_SYSTEM (slim)-! +} + +!define MOCK_TEST { +!-| script | fitnesse.fixtures.Pass |-! +!-| ensure | ok |-! +} +*! + +!|Library| +|page driver| +|echo fixture| + +!|given page with content | +|page |content | +|SuiteParent |${PATHS} | +|SuiteParent.SuiteSetUp | | +|SuiteParent.SuiteTearDown | | +|SuiteParent.TestOneOne | ${MOCK_TEST} | +|SuiteParent.TestOneTwo | ${MOCK_TEST} | + +For normal (HTML) responses: + +!|script | +| check | request page | SuiteParent?suite | 200 | +| show | content | +| ensure | content contains | Test Pages: 4 right, 0 wrong, 0 ignored, 0 exceptions | +| ensure | content matches | 0 right, 0 wrong, 0 ignored, 0 exceptions.*>SuiteSetUp | +| ensure | content matches | 0 right, 0 wrong, 0 ignored, 0 exceptions.*>SuiteTearDown | + +Same for XML: + +!|script | +| check | request page | SuiteParent?suite&format=xml | 200 | +| show | content | +| ensure | content matches | .*.*4.*.*.*0.*.*.*0.*.*.*0.*.* | + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/EmptySuiteSetUpAndTearDownShouldCountAsRightPages/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/EmptySuiteSetUpAndTearDownShouldCountAsRightPages/properties.xml new file mode 100644 index 0000000..3e87512 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/EmptySuiteSetUpAndTearDownShouldCountAsRightPages/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/SetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/SetUp/content.txt new file mode 100644 index 0000000..c4bef3d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/SetUp/content.txt @@ -0,0 +1,3 @@ +!include -c + + true + true + + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/SetUpAndTearDownShouldBeIncludedProperly/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/SetUpAndTearDownShouldBeIncludedProperly/content.txt new file mode 100644 index 0000000..8683904 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/SetUpAndTearDownShouldBeIncludedProperly/content.txt @@ -0,0 +1,56 @@ +!define TEST_SYSTEM {slim} + +!define PATHS { +${SUT_PATH} +!-!define TEST_SYSTEM (slim:A)-! +} + +!|Library| +|page driver| +|echo fixture| + +!|given page with content | +|page |content | +|SuiteParent |${PATHS} | +|SuiteParent.SuiteChildOne | | +|SuiteParent.SuiteChildOne.SuiteSetUp | | +|SuiteParent.SuiteChildOne.SuiteTearDown | | +|SuiteParent.SuiteChildOne.TestOneOne | | +|SuiteParent.SuiteChildOne.TestOneTwo | | +|SuiteParent.SuiteChildTwo | | +|SuiteParent.SuiteChildTwo.SuiteSetUp | | +|SuiteParent.SuiteChildTwo.SuiteTearDown | | +|SuiteParent.SuiteChildTwo.TestTwoOne | | +|SuiteParent.SuiteChildTwo.TestTwoTwo | | +|SuiteParent.SuiteChildThree | | +|SuiteParent.SuiteChildThree.TestThreeOne| | +|SuiteParent.SuiteChildThree.TestThreeTwo| | +|SuiteParent.SuiteChildOne.TestOneThree |&bang;define TEST_SYSTEM {slim:B}| + +!|script | +|check|request page|SuiteParent?suite|200| + +!|ordered query:pages run in suite|SuiteChildOne|A| +|page name | +|SuiteChildOne.SuiteSetUp | +|SuiteChildOne.TestOneOne | +|SuiteChildOne.TestOneTwo | +|SuiteChildOne.SuiteTearDown | + +!|ordered query:pages run in suite|SuiteChildOne|B| +|page name | +|SuiteChildOne.SuiteSetUp | +|SuiteChildOne.TestOneThree | +|SuiteChildOne.SuiteTearDown | + +!|ordered query:pages run in suite|SuiteChildTwo|A| +|page name | +|SuiteChildTwo.SuiteSetUp | +|SuiteChildTwo.TestTwoOne | +|SuiteChildTwo.TestTwoTwo | +|SuiteChildTwo.SuiteTearDown | + +!|ordered query:pages run in suite|SuiteChildThree|A| +|page name | +|SuiteChildThree.TestThreeOne | +|SuiteChildThree.TestThreeTwo | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/SetUpAndTearDownShouldBeIncludedProperly/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/SetUpAndTearDownShouldBeIncludedProperly/properties.xml new file mode 100644 index 0000000..7690fd9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/SetUpAndTearDownShouldBeIncludedProperly/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true + +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestExecutionStatusBox/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestExecutionStatusBox/content.txt new file mode 100644 index 0000000..5109246 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestExecutionStatusBox/content.txt @@ -0,0 +1,34 @@ +When you execute a suite page, the execution status box will be displayed in the upper right hand corner. +---- +Create a Suite page + +!|script|Page Builder| +|line|${SUT_PATH}| +|page|!-SuitePage-!| + +Create a simple test page + +!|script|Page Builder| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|page|!-SuitePage.TestPage-!| + +Now run the suite page. + +|Response Requester.| +|uri |valid?| +|!-SuitePage?responder=suite-!|true| + +|Response Examiner.| +|contents?| +|| + +The suite should containt the execution-status div +|Response Examiner.| +|type |pattern|matches?| +|contents|!-TestPage-!|true| + +The error log page should not have any errors + +|Response Examiner.| +|type |pattern|matches?| +|contents|
|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestExecutionStatusBox/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestExecutionStatusBox/properties.xml new file mode 100644 index 0000000..a76e339 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestExecutionStatusBox/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestFirstTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestFirstTest/content.txt new file mode 100644 index 0000000..30668ea --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestFirstTest/content.txt @@ -0,0 +1,52 @@ +When you execute a suite page with a specified start test, !-FitNesse-! should only run tests that start after the start test. + +---- + +Create a Suite page + +!|script|Page Builder| +|line|${SUT_PATH}| +|page|!-SuitePage-!| + +Create two sub pages + +|script|Page Builder| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|page|!-SuitePage.TestPageOne-!| + + +|script|Page Builder| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|page|!-SuitePage.TestPageTwo-!| + +Now run the suite page. + +|Response Requester.| +|uri |valid?| +|!-SuitePage?responder=suite&firstTest=TestPageTwo-!|true| + +|Response Examiner.| +|contents?| +|| + +The suite should report the TestPages and should show no errors. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-TestPageTwo-!|true| +|contents|!-TestPageOne-!|false| +|contents|Test Pages:.*1 right|true| + +The error log page should not have any errors + +|Response Requester.| +|uri |valid?| +|!-SuitePage?executionLog-!|true| + +|Response Examiner.| +|contents?| +|| + +|Response Examiner.| +|type |pattern|matches?| +|contents|Exit code.*0.*Time|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestFirstTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestFirstTest/properties.xml new file mode 100644 index 0000000..94161f1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestFirstTest/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestNotSuiteFilter/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestNotSuiteFilter/content.txt new file mode 100644 index 0000000..0456f1b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestNotSuiteFilter/content.txt @@ -0,0 +1,53 @@ +When you execute a suite page with a 'not' filter, !-FitNesse-! should only run tests that do not have a certain suite filter/tag + +---- + +Create a Suite page + +|script|Page Builder| +|line|${SUT_PATH}| +|line|!-!path fitnesse.jar-!| +|page|!-SuitePage-!| + +Create two sub pages + +|script|Page Builder| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|attributes|Suites=bad| +|page|!-SuitePage.TestPageOne-!| + +|script|Page Builder| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|page|!-SuitePage.TestPageTwo-!| + +Now run the suite page. + +|Response Requester.| +|uri |valid?| +|!-SuitePage?responder=suite&excludeSuiteFilter=bad-!|true| + +|Response Examiner.| +|contents?| +|| + +The suite should report the TestPages and should show no errors. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-TestPageOne-!|false| +|contents|!-TestPageTwo-!|true| +|contents|Test Pages:.*1 right|true| + +The error log page should not have any errors + +|Response Requester.| +|uri |valid?| +|!-SuitePage?executionLog-!|true| + +|Response Examiner.| +|contents?| +|| + +|Response Examiner.| +|type |pattern|matches?| +|contents|Exit code.*0.*Time|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestNotSuiteFilter/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestNotSuiteFilter/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestNotSuiteFilter/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestOneSubPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestOneSubPage/content.txt new file mode 100644 index 0000000..1deb4e5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestOneSubPage/content.txt @@ -0,0 +1,47 @@ +When you execute a suite page, !-FitNesse-! tests all the subpages. +This example shows just one test subpage being executed. + +---- + +Create a Suite page + +|script|Page Builder| +|line|${SUT_PATH}| +|page|!-SuitePage-!| + +Create a simple test page + +|script|Page Builder| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|page|!-SuitePage.TestPage-!| + +Now run the suite page. + +|Response Requester.| +|uri |valid?| +|!-SuitePage?responder=suite-!|true| + +|Response Examiner.| +|contents?| +|| + +The suite should report the TestPage and should show no errors. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-TestPage-!|true| +|contents|Test Pages:.*1 right|true| + +The error log page should not have any errors + +|Response Requester.| +|uri |valid?| +|!-SuitePage?executionLog-!|true| + +|Response Examiner.| +|contents?| +|| + +|Response Examiner.| +|type |pattern|matches?| +|contents|Exit code.*0.*Time|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestOneSubPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestOneSubPage/properties.xml new file mode 100644 index 0000000..94161f1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestOneSubPage/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestPrunedPageIsExcluded/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestPrunedPageIsExcluded/content.txt new file mode 100644 index 0000000..fd09af8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestPrunedPageIsExcluded/content.txt @@ -0,0 +1,54 @@ +When you execute a suite page, !-FitNesse-! tests all the subpages +unless the Prune attribute on the Properties page is set. +This example shows just one test subpage of two subpages being executed. + +---- + +Create a Suite page + +|script|Page Builder| +|line|${SUT_PATH}| +|page|!-SuitePage-!| + +Create two sub pages: 1 is tested, 2 is pruned/ignored + +|script|Page Builder| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|page|!-SuitePage.TestPageOne-!| + +|script|Page Builder| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|attributes|Prune=true| +|page|!-SuitePage.TestPageTwo-!| + +Now run the suite page. + +|Response Requester.| +|uri |valid?| +|!-SuitePage?responder=suite-!|true| + +|Response Examiner.| +|contents?| +|| + +The suite should report only the one TestPage and should show no errors. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-TestPageOne-!|true| +|contents|!-TestPageTwo-!|false| +|contents|Test Pages:.*1 right|true| + +The error log page should not have any errors + +|Response Requester.| +|uri |valid?| +|!-SuitePage?executionLog-!|true| + +|Response Examiner.| +|contents?| +|| + +|Response Examiner.| +|type |pattern|matches?| +|contents|Exit code.*0.*Time|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestPrunedPageIsExcluded/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestPrunedPageIsExcluded/properties.xml new file mode 100644 index 0000000..4726122 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestPrunedPageIsExcluded/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + +1197951924826 +4630030422263497093 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestRunTestsMatchingAllTags/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestRunTestsMatchingAllTags/content.txt new file mode 100644 index 0000000..06d3d7b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestRunTestsMatchingAllTags/content.txt @@ -0,0 +1,53 @@ +When you execute a suite page with "runTestsMatchingAllTags" defined, !-FitNesse-! should only run tests that have all suite filters/tags specified. + +---- + +Create a Suite page + +|script|Page Builder| +|line|${SUT_PATH}| +|page|!-SuitePage-!| + +Create two sub pages + +|script|Page Builder| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|attributes|Suites=good!COMMA!better| +|page|!-SuitePage.TestPageOne-!| + +|script|Page Builder| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|attributes|Suites=good| +|page|!-SuitePage.TestPageTwo-!| + +Now run the suite page. + +|Response Requester.| +|uri |valid?| +|!-SuitePage?responder=suite&runTestsMatchingAllTags=good,better-!|true| + +|Response Examiner.| +|contents?| +|| + +The suite should report the TestPages and should show no errors. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-TestPageOne-!|true| +|contents|!-TestPageTwo-!|false| +|contents|Test Pages:.*1 right|true| + +The error log page should not have any errors + +|Response Requester.| +|uri |valid?| +|!-SuitePage?executionLog-!|true| + +|Response Examiner.| +|contents?| +|| + +|Response Examiner.| +|type |pattern|matches?| +|contents|Exit code.*0.*Time|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestRunTestsMatchingAllTags/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestRunTestsMatchingAllTags/properties.xml new file mode 100644 index 0000000..7690fd9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestRunTestsMatchingAllTags/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true + +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestRunTestsMatchingAllTagsWithExclusion/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestRunTestsMatchingAllTagsWithExclusion/content.txt new file mode 100644 index 0000000..40adf22 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestRunTestsMatchingAllTagsWithExclusion/content.txt @@ -0,0 +1,53 @@ +When you execute a suite page with "runTestsMatchingAllTags" defined, !-FitNesse-! should only run tests that have all suite filters/tags specified. If any exclusion filters are defined, the tests still don't match if they contain any exclusion tag. + +---- + +Create a Suite page + +|script|Page Builder| +|line|${SUT_PATH}| +|page|!-SuitePage-!| + +Create two sub pages + +|script|Page Builder| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|attributes|Suites=good!COMMA!better| +|page|!-SuitePage.TestPageOne-!| + +|script|Page Builder| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|attributes|Suites=good!COMMA!better!COMMA!bad| +|page|!-SuitePage.TestPageTwo-!| + +Now run the suite page. + +|Response Requester.| +|uri |valid?| +|!-SuitePage?responder=suite&runTestsMatchingAllTags=good,better&excludeSuiteFilter=bad-!|true| + +|Response Examiner.| +|contents?| +|| + +The suite should report the TestPages and should show no errors. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-TestPageOne-!|true| +|contents|!-TestPageTwo-!|false| +|contents|Test Pages:.*1 right|true| + +The error log page should not have any errors + +|Response Requester.| +|uri |valid?| +|!-SuitePage?executionLog-!|true| + +|Response Examiner.| +|contents?| +|| + +|Response Examiner.| +|type |pattern|matches?| +|contents|Exit code.*0.*Time|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestRunTestsMatchingAllTagsWithExclusion/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestRunTestsMatchingAllTagsWithExclusion/properties.xml new file mode 100644 index 0000000..7690fd9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestRunTestsMatchingAllTagsWithExclusion/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true + +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteFilter/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteFilter/content.txt new file mode 100644 index 0000000..02c3bc0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteFilter/content.txt @@ -0,0 +1,159 @@ +When you execute a suite page with a filter, !-FitNesse-! should only run tests that have a certain suite filter/tag + +---- + +Create a Suite page + +|script|Page Builder | +|line |${SUT_PATH} | +|page |!-SuitePage-!| + +Create two sub pages + +|script |Page Builder | +|line |!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|attributes|Suites=good | +|page |!-SuitePage.TestPageOne-! | + +|script|Page Builder | +|line |!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|page |!-SuitePage.TestPageTwo-! | + +Now run the suite page. + +|Response Requester. | +|uri |valid?| +|!-SuitePage?responder=suite&suiteFilter=good-!|true | + +|Response Examiner.| +|contents? | +| | + +The suite should report the TestPages and should show no errors. + +|Response Examiner. | +|type |pattern |matches?| +|contents|!-TestPageOne-! |true | +|contents|!-TestPageTwo-! |false | +|contents|Test Pages:.*1 right|true | + +The error log page should not have any errors + +|Response Requester. | +|uri |valid?| +|!-SuitePage?executionLog-!|true | + +|Response Examiner.| +|contents? | +| | + +|Response Examiner. | +|type |pattern |matches?| +|contents|Exit code.*0.*Time|true | + +--- + +Perform the test again with alternate suite filter keyword "runTestsMatchingAnyTag" + +Create a Suite page + +|script|Page Builder | +|line |${SUT_PATH} | +|page |!-SuitePage-!| + +Create two sub pages + +|script |Page Builder | +|line |!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|attributes|Suites=good | +|page |!-SuitePage.TestPageOne-! | + +|script|Page Builder | +|line |!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|page |!-SuitePage.TestPageTwo-! | + +Now run the suite page. + +|Response Requester. | +|uri |valid?| +|!-SuitePage?responder=suite&runTestsMatchingAnyTag=good-!|true | + +|Response Examiner.| +|contents? | +| | + +The suite should report the TestPages and should show no errors. + +|Response Examiner. | +|type |pattern |matches?| +|contents|!-TestPageOne-! |true | +|contents|!-TestPageTwo-! |false | +|contents|Test Pages:.*1 right|true | + +The error log page should not have any errors + +|Response Requester. | +|uri |valid?| +|!-SuitePage?executionLog-!|true | + +|Response Examiner.| +|contents? | +| | + +|Response Examiner. | +|type |pattern |matches?| +|contents|Exit code.*0.*Time|true | + +--- + +Perform once more to ensure the new keyword holds priority over the old keyword. + + +Create a Suite page + +|script|Page Builder | +|line |${SUT_PATH} | +|page |!-SuitePage-!| + +Create two sub pages + +|script |Page Builder | +|line |!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|attributes|Suites=good | +|page |!-SuitePage.TestPageOne-! | + +|script|Page Builder | +|line |!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|page |!-SuitePage.TestPageTwo-! | + +Now run the suite page. + +|Response Requester. | +|uri |valid?| +|!-SuitePage?responder=suite&runTestsMatchingAnyTag=good&suiteFilter=bad-!|true | + +|Response Examiner.| +|contents? | +| | + +The suite should report the TestPages and should show no errors. + +|Response Examiner. | +|type |pattern |matches?| +|contents|!-TestPageOne-! |true | +|contents|!-TestPageTwo-! |false | +|contents|Test Pages:.*1 right|true | + +The error log page should not have any errors + +|Response Requester. | +|uri |valid?| +|!-SuitePage?executionLog-!|true | + +|Response Examiner.| +|contents? | +| | + +|Response Examiner. | +|type |pattern |matches?| +|contents|Exit code.*0.*Time|true | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteFilter/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteFilter/properties.xml new file mode 100644 index 0000000..e8fecd9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteFilter/properties.xml @@ -0,0 +1,12 @@ + + + + + + + +good + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithAliasedXrefWidget/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithAliasedXrefWidget/content.txt new file mode 100644 index 0000000..15efcfb --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithAliasedXrefWidget/content.txt @@ -0,0 +1,65 @@ +When you execute a suite page, !-FitNesse-! tests all the pages mentioned in !-!see-! cross reference widgets. +This test ensures that any !-!see-! cross references that are aliased also work as expected. + +---- +Create a hierarchy of pages + +|script|Page Builder| +|line|Top-level page forming sub-wiki| +|page|!-TopPage-!| + +|script|Page Builder| +|line|${SUT_PATH}| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|page|!-TopPage.TestPage-!| + +Create a Suite page that mentions the test page in a !-!see-! widget + +|script|Page Builder| +|line|!-!see [[Test page][.TopPage.TestPage]]-!| +|page|!-SuitePage-!| + +|Response Requester.| +|uri |valid?| +|!-SuitePage-!|true| + +|Response Examiner.| +|contents?| +|| + +Check the suite page has the !-!see-! reference on it. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-See:.*TopPage\.TestPage.*Test page-!|true| + +Now run the suite page. + +|Response Requester.| +|uri |valid?| +|!-SuitePage?responder=suite-!|true| + +|Response Examiner.| +|contents?| +|| + +The suite should report the !-TestPage-! and should show no errors. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-TopPage\.TestPage-!|true| +|contents|Test Pages:.*1 right|true| + +The error log page should not have any errors + +|Response Requester.| +|uri |valid?| +|!-SuitePage?executionLog-!|true| + +|Response Examiner.| +|contents?| +|| + +|Response Examiner.| +|type |pattern|matches?| +|contents|Exit code.*0.*Time|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithAliasedXrefWidget/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithAliasedXrefWidget/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithAliasedXrefWidget/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithOneXrefWidget/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithOneXrefWidget/content.txt new file mode 100644 index 0000000..03db4c7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithOneXrefWidget/content.txt @@ -0,0 +1,55 @@ +When you execute a suite page, !-FitNesse-! tests all the pages mentioned in !-!see-! cross reference widgets. +''Note: the classpath for the cross referenced pages is not determined by the referencing page, it is determined by the referenced pages.'' + +---- +Create a simple test page + +|script|Page Builder| +|line|${SUT_PATH}| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|page|!-TestPage-!| + +Create a Suite page that mentions the test page in a !-!see-! widget + +|script|Page Builder| +|line|!-!see TestPage-!| +|page|!-SuitePage-!| + +|Response Requester.| +|uri |valid?| +|!-SuitePage-!|true| + +|Response Examiner.| +|contents?| +|| + +Now run the suite page. + +|Response Requester.| +|uri |valid?| +|!-SuitePage?responder=suite-!|true| + +|Response Examiner.| +|contents?| +|| + +The suite should report the !-TestPage-! and should show no errors. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-TestPage-!|true| +|contents|Test Pages:.*1 right|true| + +The error log page should not have any errors + +|Response Requester.| +|uri |valid?| +|!-SuitePage?executionLog-!|true| + +|Response Examiner.| +|contents?| +|| + +|Response Examiner.| +|type |pattern|matches?| +|contents|Exit code.*0.*Time|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithOneXrefWidget/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithOneXrefWidget/properties.xml new file mode 100644 index 0000000..94161f1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithOneXrefWidget/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithSubWikiXrefWidget/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithSubWikiXrefWidget/content.txt new file mode 100644 index 0000000..3c1f746 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithSubWikiXrefWidget/content.txt @@ -0,0 +1,65 @@ +When you execute a suite page, !-FitNesse-! tests all the pages mentioned in !-!see-! cross reference widgets. +This test ensures that any !-!see-! cross references that are references to test in a different sub-wiki also work as expected. + +---- +Create a hierarchy of pages + +|script|Page Builder| +|line|Top-level page forming sub-wiki| +|page|!-TopPage-!| + +|script|Page Builder| +|line|${SUT_PATH}| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|page|!-TopPage.TestPage-!| + +Create a Suite page that mentions the test page in a !-!see-! widget + +|script|Page Builder| +|line|!-!see .TopPage.TestPage-!| +|page|!-SuitePage-!| + +|Response Requester.| +|uri |valid?| +|!-SuitePage-!|true| + +|Response Examiner.| +|contents?| +|| + +Check the suite page has the !-!see-! reference on it. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-\.TopPage\.TestPage-!|true| + +Now run the suite page. + +|Response Requester.| +|uri |valid?| +|!-SuitePage?responder=suite-!|true| + +|Response Examiner.| +|contents?| +|| + +The suite should report the !-TestPage-! and should show no errors. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-TopPage\.TestPage-!|true| +|contents|Test Pages:.*1 right|true| + +The error log page should not have any errors + +|Response Requester.| +|uri |valid?| +|!-SuitePage?executionLog-!|true| + +|Response Examiner.| +|contents?| +|| + +|Response Examiner.| +|type |pattern|matches?| +|contents|Exit code.*0.*Time|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithSubWikiXrefWidget/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithSubWikiXrefWidget/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestSuiteWithSubWikiXrefWidget/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestTwoSubPages/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestTwoSubPages/content.txt new file mode 100644 index 0000000..9a1c912 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestTwoSubPages/content.txt @@ -0,0 +1,51 @@ +When you execute a suite page, !-FitNesse-! tests all the subpages. +This example shows just one test subpage being executed. + +---- + +Create a Suite page + +|script|Page Builder| +|line|${SUT_PATH}| +|page|!-SuitePage-!| + +Create two sub pages + +|script|Page Builder| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|page|!-SuitePage.TestPageOne-!| + +|script|Page Builder| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|page|!-SuitePage.TestPageTwo-!| + +Now run the suite page. + +|Response Requester.| +|uri |valid?| +|!-SuitePage?responder=suite-!|true| + +|Response Examiner.| +|contents?| +|| + +The suite should report the TestPages and should show no errors. + +|Response Examiner.| +|type |pattern|matches?| +|contents|!-TestPageOne.*TestPageTwo-!|true| +|contents|Test Pages:.*2 right|true| + +The error log page should not have any errors + +|Response Requester.| +|uri |valid?| +|!-SuitePage?executionLog-!|true| + +|Response Examiner.| +|contents?| +|| + +|Response Examiner.| +|type |pattern|matches?| +|contents|Exit code.*0.*Time|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestTwoSubPages/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestTwoSubPages/properties.xml new file mode 100644 index 0000000..94161f1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/TestTwoSubPages/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/content.txt new file mode 100644 index 0000000..f7edf45 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/content.txt @@ -0,0 +1,2 @@ +When you execute a suite it should run all the subpages of the suite, and any pages mentioned in a !test widget. +!contents -g -p \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/properties.xml new file mode 100644 index 0000000..fd7f858 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteResponder/properties.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + 1197951428357 + -1949328092502921704 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/SuiteSetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/SuiteSetUp/content.txt new file mode 100644 index 0000000..9c97011 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/SuiteSetUp/content.txt @@ -0,0 +1 @@ +# No data \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/SuiteSetUp/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/SuiteSetUp/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/SuiteSetUp/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/SuiteTearDown/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/SuiteTearDown/content.txt new file mode 100644 index 0000000..9c97011 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/SuiteTearDown/content.txt @@ -0,0 +1 @@ +# No data \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/SuiteTearDown/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/SuiteTearDown/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/SuiteTearDown/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDown/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDown/content.txt new file mode 100644 index 0000000..497d77b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDown/content.txt @@ -0,0 +1,63 @@ +!3 Test normal [[!-SetUp and TearDown-!][.FitNesse.SuiteAcceptanceTests.SuiteResponderTests.SuiteTestResponders.SuiteSetUpAndTearDown]] +---- + * First create a normal page, plus header and footer pages. +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-NormalPage-!|normal||true| +|!-TestPage-!|test||true| +|!-PageHeader-!|header||true| +|!-PageFooter-!|footer||true| +|!-SetUp-!|set up||true| +|!-TearDown-!|tear down||true| + * Then request the normal page +|Response Requester.| +|uri|valid?| +|!-NormalPage-!|true| + * Ensure that the header and and footer text appear in the normal page. +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|!-(header).*(normal).*(footer)-!|true|| + * Ensure that setup and teardown are not in this page. +|Response Examiner.| +|type|pattern|matches?| +|contents|set up|false| +|contents|tear down|false| + * Now request the test page +|Response Requester.| +|uri|valid?| +|!-TestPage-!|true| + * Ensure that the setup and and teardown text appear in the test page along with the header and footer. +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|!-(header).*(set up).*(test).*(tear down).*(footer)-!|true|| +---- +!3 Test that sub pages inherit setups and tear downs. + * Create a sub page +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-NormalPage.TestSubPage-!|test sub page||true| + * Then request the Sub page +|Response Requester.| +|uri|valid?| +|!-NormalPage.TestSubPage-!|true| + * Ensure that the setup and and teardown text are inherited by the sub page. +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|!-(header).*(set up).*(test sub page).*(tear down).*(footer)-!|true|| +---- +!3 Test that sub setups and sub teardowns override inherited setups and teardowns. + * Create sub setup and sub teardown +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-NormalPage.SetUp-!|sub setup||true| +|!-NormalPage.TearDown-!|sub teardown||true| + * Then request the Sub page +|Response Requester.| +|uri|valid?| +|!-NormalPage.TestSubPage-!|true| + * Ensure that the sub header and and sub footer text are inherited override their parents.. +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|!-(header).*(sub setup).*(test sub page).*(sub teardown).*(footer)-!|true|| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDown/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDown/properties.xml new file mode 100644 index 0000000..0ee9040 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDown/properties.xml @@ -0,0 +1,10 @@ + + + + 20081213071456 + + + + 1229174096531 + -7793342213354336999 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreCollapsable/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreCollapsable/content.txt new file mode 100644 index 0000000..d851e8a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreCollapsable/content.txt @@ -0,0 +1,23 @@ +!3 [[!-SetUp and TearDown-!][.FitNesse.SuiteAcceptanceTests.SuiteResponderTests.SuiteTestResponders.SuiteSetUpAndTearDown]] are rendered as [[Collapsable Sections][.FitNesse.MarkupCollapsableSection]]. + + * First create a normal page, plus header and footer pages. +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-TestPage-!|test||true| +|!-SetUp-!|set up||true| +|!-TearDown-!|tear down||true| + + * Now request the test page +|Response Requester.| +|uri|valid?| +|!-TestPage-!|true| + + * Ensure that the setup and and teardown text appear in the test page along with the header and footer. +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|.*(set up).*(test).*(tear down).*|true|| + +!|Response Examiner.| +|type|pattern|matches?| +|contents|
.*
set up
|true| +|contents|
.*
tear down
|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreCollapsable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreCollapsable/properties.xml new file mode 100644 index 0000000..3d1ccfd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreCollapsable/properties.xml @@ -0,0 +1,15 @@ + + + true + true + + true + true + true + true + true + true + true + 1237154501197 + -6399284714028620109 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreCollapsableWithVariable/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreCollapsableWithVariable/content.txt new file mode 100644 index 0000000..c2ba9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreCollapsableWithVariable/content.txt @@ -0,0 +1,38 @@ +!3 [[!-SetUp and TearDown-!][.FitNesse.SuiteAcceptanceTests.SuiteResponderTests.SuiteTestResponders.SuiteSetUpAndTearDown]] can be set to be automatically collapsed when rendered. + +By setting the variables COLLAPSE_SETUP or COLLAPSE_TEARDOWN to true (using the [[!-VariableWidget-!][.FitNesse.MarkupVariables]]), you can tell [[!-FitNesse-!][.FitNesse]] to automatically collapse !-SetUp and TearDown-! when they are rendered. +---- +* Create a page with the variable definitions. + +|script|Page Builder| +|line|!-!define COLLAPSE_SETUP {true}-!| +|line|!-!define COLLAPSE_TEARDOWN {true}-!| +|page|!-ParentPage-!| + +* Create !-SetUp-! and !-TearDown-! +|Page creator.| +|Page name.|Page contents.|valid?| +|!-SetUp-!|set up|true| +|!-TearDown-!|tear down|true| + +* Create a child test page + +|script|Page Builder| +|line|test something| +|page|!-ParentPage.TestPage-!| + +* Now request the test page +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage.TestPage-!|true|| + +* Verify that the setup and and teardown text appear in the test page. +|Response Examiner.| +|type|pattern|matches?| +|contents|.*(set up).*(test).*(tear down).*|true| + +* Verify that the right style is being rendered. +!|Response Examiner.| +|type|pattern|matches?| +|contents|
.*
set up
|true| +|contents|
.*
tear down
|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreCollapsableWithVariable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreCollapsableWithVariable/properties.xml new file mode 100644 index 0000000..a76e339 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreCollapsableWithVariable/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreHidden/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreHidden/content.txt new file mode 100644 index 0000000..df1783c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreHidden/content.txt @@ -0,0 +1,23 @@ +!3 [[!-SetUp and TearDown-!][.FitNesse.SuiteAcceptanceTests.SuiteResponderTests.SuiteTestResponders.SuiteSetUpAndTearDown]] are rendered as [[Collapsable Sections][.FitNesse.MarkupCollapsableSection]] that are collapsed by default. + + * First create a normal page, plus header and footer pages. +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-TestPage-!|test||true| +|!-SetUp-!|set up||true| +|!-TearDown-!|tear down||true| + + * Now request the test page +|Response Requester.| +|uri|valid?| +|!-TestPage-!|true| + + * Ensure that the setup and and teardown text appear in the test page along with the header and footer. +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|.*(set up).*(test).*(tear down).*|true|| + +!|Response Examiner.| +|type|pattern|matches?| +|contents|
.*
set up
|true| +|contents|
.*
tear down
|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreHidden/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreHidden/properties.xml new file mode 100644 index 0000000..7492233 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreHidden/properties.xml @@ -0,0 +1,10 @@ + + + + + + + + 1237027692279 + -2287924455913239235 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreUncollapsedWithVariable/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreUncollapsedWithVariable/content.txt new file mode 100644 index 0000000..85ee3c4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreUncollapsedWithVariable/content.txt @@ -0,0 +1,36 @@ +!3 [[!-SetUp and TearDown-!][.FitNesse.SuiteAcceptanceTests.SuiteResponderTests.SuiteTestResponders.SuiteSetUpAndTearDown]] can be set to be uncollapsed when rendered. + +By setting the variables COLLAPSE_SETUP or COLLAPSE_TEARDOWN to false (using the [[!-VariableWidget-!][.FitNesse.MarkupVariables]]), you can tell [[!-FitNesse-!][.FitNesse]] to automatically uncollapse !-SetUp and TearDown-! when they are rendered. +---- +* Create a page with the variable definitions. +|script|Page Builder| +|line|!-!define COLLAPSE_SETUP {false}-!| +|line|!-!define COLLAPSE_TEARDOWN {false}-!| +|page|!-ParentPage-!| + +* Create !-SetUp-! and !-TearDown-! +|Page creator.| +|Page name.|Page contents.|valid?| +|!-SetUp-!|set up|true| +|!-TearDown-!|tear down|true| + +* Create a child test page +|script|Page Builder| +|line|test something| +|page|!-ParentPage.TestPage-!| + +* Now request the test page +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage.TestPage-!|true|| + +* Verify that the setup and and teardown text appear in the test page. +|Response Examiner.| +|type|pattern|matches?| +|contents|.*(set up).*(test).*(tear down).*|true| + +* Verify that the right style is being rendered. +!|Response Examiner.| +|type|pattern|matches?| +|contents|
.*
set up
|true| +|contents|
.*
tear down
|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreUncollapsedWithVariable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreUncollapsedWithVariable/properties.xml new file mode 100644 index 0000000..6358fb9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSetUpAndTearDownAreUncollapsedWithVariable/properties.xml @@ -0,0 +1,15 @@ + + + true + true + + true + true + true + true + true + true + true + 1237027784671 + -3141020147140614349 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSuiteSetUpAndTearDownAreHidden/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSuiteSetUpAndTearDownAreHidden/content.txt new file mode 100644 index 0000000..7d6ec77 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSuiteSetUpAndTearDownAreHidden/content.txt @@ -0,0 +1,23 @@ +!3 [[!-SuiteSetUp and SuiteTearDown-!][.FitNesse.SuiteAcceptanceTests.SuiteResponderTests.SuiteTestResponders.SuiteSetUpAndTearDown]] are rendered as [[Collapsable Sections][.FitNesse.MarkupCollapsableSection]]. + + * First create a normal page, plus header and footer pages. +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-TestPage-!|test||true| +|!-SuiteSetUp-!|suite set up||true| +|!-SuiteTearDown-!|suite tear down||true| + + * Now request the test page +|Response Requester.| +|uri|valid?| +|!-TestPage-!|true| + + * Ensure that the setup and and teardown text appear in the test page along with the header and footer. +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|.*(suite set up).*(test).*(suite tear down).*|true|| + +!|Response Examiner.| +|type|pattern|matches?| +|contents|
.*
suite set up
|true| +|contents|
.*
suite tear down
|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSuiteSetUpAndTearDownAreHidden/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSuiteSetUpAndTearDownAreHidden/properties.xml new file mode 100644 index 0000000..507ea9d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/TestSuiteSetUpAndTearDownAreHidden/properties.xml @@ -0,0 +1,13 @@ + + + true + true + + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/content.txt new file mode 100644 index 0000000..398ffe3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/content.txt @@ -0,0 +1,7 @@ +!2 !-SetUp-! and !-TearDown-! + +'''!-SetUp-! and !-TearDown-! pages behave just like [[!-PageHeader-! and !-PageFooter-!][.FitNesse.SuiteAcceptanceTests.SuiteWikiPageResponderTests.TestHeadersAndFooters]] except that they apply only to pages that have the ''Test'' attribute set.''' + +Any tables that you want executed '''before''' every Test page should go in !-SetUp-!. +Any tables that you want executed '''after''' every Test page should go in !-TearDown-!. +----!contents \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/properties.xml new file mode 100644 index 0000000..4f46fca --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/SuiteSetUpAndTearDown/properties.xml @@ -0,0 +1,8 @@ + + + + 20060717210105 + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestPathIsIncluded/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestPathIsIncluded/content.txt new file mode 100644 index 0000000..a41cfaa --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestPathIsIncluded/content.txt @@ -0,0 +1,6 @@ +!path zork + +!|script|Java Properties| +|show|property|java.class.path|| +|property|java.class.path|should match|.*zork.*| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestPathIsIncluded/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestPathIsIncluded/properties.xml new file mode 100644 index 0000000..92fbd73 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestPathIsIncluded/properties.xml @@ -0,0 +1,14 @@ + + + true + true + true + true + true + true + true + true + true + 1213102754520 + -2900228412536126644 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestResponder/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestResponder/content.txt new file mode 100644 index 0000000..289f33f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestResponder/content.txt @@ -0,0 +1,41 @@ +When you execute a test page, !-FitNesse-! gathers up the html and passes it to FIT which runs the fixtures and colorizes the HTML appropriately. + +---- + +Create a simple test page + +|script|Page Builder| +|line|${SUT_PATH}| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|page|!-TestPage-!| + +Now run the test page. + +|Response Requester.| +|uri |valid?| +|!-TestPage?responder=test-!|true| + +|Response Examiner.| +|contents?| +|| + +The bgcolor of the cell should turn green + +|Response Examiner.| +|type |pattern|matches?| +|contents|class="pass"|true| +|contents|Assertions:.*\s+.*?1 right, 0 wrong, 0 ignored, 0 exceptions|true| + +The error log page should not have any errors + +|Response Requester.| +|uri |valid?| +|!-TestPage?executionLog-!|true| + +|Response Examiner.| +|contents?| +|| + +|Response Examiner.| +|type |pattern|matches?| +|contents|Exit code.*0.*Time|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestResponder/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestResponder/properties.xml new file mode 100644 index 0000000..94161f1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestResponder/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestStatusBox/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestStatusBox/content.txt new file mode 100644 index 0000000..82394b2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestStatusBox/content.txt @@ -0,0 +1,26 @@ +When you execute a test page, a status box will appear in the upper right hand corner that will provide a link to the error log. + +---- + +Create a simple test page + +|script|Page Builder| +|line|${SUT_PATH}| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|page|!-TestPage-!| + +Now run the test page. + +|Response Requester.| +|uri |valid?| +|!-TestPage?responder=test-!|true| + +|Response Examiner.| +|contents?| +|| + +Check to make sure the box exists. + +|Response Examiner. | +|type |pattern |matches?| +|contents||true | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestStatusBox/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestStatusBox/properties.xml new file mode 100644 index 0000000..a76e339 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/TestStatusBox/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/content.txt new file mode 100644 index 0000000..8a3376a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/content.txt @@ -0,0 +1,4 @@ +This suite specifies all the responders that run tests. + +These include +!contents diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/properties.xml new file mode 100644 index 0000000..6e797f6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteTestResponders/properties.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + 1213102812350 + 6235592292230792988 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/TestUsenameInVersionList/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/TestUsenameInVersionList/content.txt new file mode 100644 index 0000000..87a5653 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/TestUsenameInVersionList/content.txt @@ -0,0 +1,27 @@ +When using authentication, the username is recorded when the page is edited and is diplayed in the version list among other places. + +First setup the Authentication module. +!|Authenticator Setup| +|username|password|status?| +|Aladdin|open sesame|| + +Create a page to be requested. +!|Page creator.| +|Page name.|valid?| +|FrontPage |true| + +No save the page a couple times wih the user logged in. This will produce a version edited by the user. +!|Response Requester.| +|uri|username|password|status?| +|FrontPage?responder=saveData&pageContent=hi+there&editTime=0&ticketId=0|Aladdin|open sesame|303| +|FrontPage?responder=saveData&pageContent=by now&editTime=0&ticketId=0|Aladdin|open sesame|303| + +Now load up the version list. +!|Response Requester.| +|uri|username|password|status?| +|FrontPage?versions|Aladdin|open sesame|200| + +The user name will be in a element without any extra characters. +|Response Examiner.| +|type |pattern|matches?|contents?| +|contents|>Aladdin<|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/TestUsenameInVersionList/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/TestUsenameInVersionList/properties.xml new file mode 100644 index 0000000..5d6a79c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/TestUsenameInVersionList/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + -7389137369786658014 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/TestVersionsInPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/TestVersionsInPage/content.txt new file mode 100644 index 0000000..a0a72ad --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/TestVersionsInPage/content.txt @@ -0,0 +1,36 @@ +When editing pages each version is recorded in the versions list. + +Create a page to be requested. +!|Page creator.| +|Page name.|valid?| +|VersionsPage|true| + +Now save the page a couple times. This will produce a version history. +!|Response Requester.| +|uri|status?| +|VersionsPage?responder=saveData&pageContent=a+change&editTime=0&ticketId=0|303| +|VersionsPage?responder=saveData&pageContent=another+change&editTime=0&ticketId=0|303| + +Now load up the version list. +!|Response Requester.| +|uri|status?| +|VersionsPage?versions|200| + +The version list has the correct headings. +|Response Examiner.| +|type|pattern|matches?| +|contents|>Compare<|true| +|contents|>Name<|true| +|contents|>Author<|true| +|contents|>Age<|true| + +The version list has 3 entries and each has a checkbox. +|Response Examiner.| +|type|pattern|matches?|matchCount?| +|contents|!-href="\?responder=viewVersion&version=-!|true|3| +|contents|!-input type="checkbox" name="Version_-!|true|3| + +Show the contents. +|Response Examiner.| +|contents?| +|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/TestVersionsInPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/TestVersionsInPage/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/TestVersionsInPage/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/content.txt new file mode 100644 index 0000000..855173b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/content.txt @@ -0,0 +1,2 @@ +!contents -g -p +!define TEST_SYSTEM {slim} diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/properties.xml new file mode 100644 index 0000000..bfef241 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/SuiteVersionResponder/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestNameResponder/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestNameResponder/content.txt new file mode 100644 index 0000000..a876055 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestNameResponder/content.txt @@ -0,0 +1,93 @@ +!2 !c !-NameReponder-! Specification + +The !-NameResponder-! is activated by a url of the form {{{[somePage]?names}}} It responds with a text/plain list of all the page names below the specified page, one per line. If no page is specified then it responds with all page names at the root level. No subpage names are returned. +---- +!3 First check a single page at the root level. +# + * Create one page. +# +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-PageOne-!|page one||true| +# + * Request the names at the root level +# +|Response Requester.| +|uri|valid?| +|!-?names-!|true| +# + * Does the response name the page? +# +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|!-PageOne-!|true|| + +# +|Response Examiner.| +|type|pattern|matches?| +|headers|text/plain|true| +---- +!3 Now check two pages at the root level +# + * Create another page. +# +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-PageTwo-!|page two||true| +# + * Request the names at the root level +# +|Response Requester.| +|uri|valid?| +|!-?names-!|true| +# + * Does the response name both pages? +# +|Response Examiner.| +|type|pattern|matches?| +|contents|!-PageOne-!|true| +|contents|!-PageTwo-!|true| +---- +!3 Now check two pages below !-PageOne-! +# + * Create another page. +# +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-PageOne.SubOne-!|sub one||true| +|!-PageOne.SubTwo-!|sub two||true| +# + * Request the names at the root level +# +|Response Requester.| +|uri|valid?| +|!-?names-!|true| +# + * Does the response name the root level pages and not the sub pages? +# +|Response Examiner.| +|type|pattern|matches?| +|contents|!-PageOne-!|true| +|contents|!-PageTwo-!|true| +|contents|!-SubOne-!|false| +|contents|!-SubTwo-!|false| +# + * Request the names at the !-PageOne-!level +# +|Response Requester.| +|uri|valid?| +|!-PageOne?names-!|true| +# + * Does the response name the root level pages and not the sub pages? +# +|Response Examiner.| +|type|pattern|matches?| +|contents|!-PageOne-!|false| +|contents|!-PageTwo-!|false| +|contents|!-SubOne-!|true| +|contents|!-SubTwo-!|true| + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestNameResponder/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestNameResponder/properties.xml new file mode 100644 index 0000000..acb19e3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestNameResponder/properties.xml @@ -0,0 +1,12 @@ + + + + 20081213071609 + + + + + + 1229174169003 + 3682311992107680289 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestPacketResponder/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestPacketResponder/content.txt new file mode 100644 index 0000000..7cc8530 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestPacketResponder/content.txt @@ -0,0 +1,31 @@ +!define TEST_SYSTEM {slim} + +!path lib/*.jar +!define PACKET {|Bob| +||Angela| +|||Lexy|6| +|||Sami|4| +|||Mandy|2| +||Micah| +|||Luka|5| +||Gina| +||Justin| +} + +!define JSON ({"tables": [{"Bob": { + "Angela": { + "Lexy": "6", + "Mandy": "2", + "Sami": "4" + }, + "Gina": {}, + "Justin": {}, + "Micah": {"Luka": "5"} +}}]}) + +!|script|page driver| +|given page|PacketPage|with content|${PACKET}| +|request page|$IT?packet| +|contains json packet|${JSON}| +|show|content| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestPacketResponder/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestPacketResponder/properties.xml new file mode 100644 index 0000000..ad0d00e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestPacketResponder/properties.xml @@ -0,0 +1,14 @@ + + + true + true + true + true + true + true + true + true + true + 1234546870709 + -1511813569038330517 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestRssResponder/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestRssResponder/content.txt new file mode 100644 index 0000000..8fa5dda --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestRssResponder/content.txt @@ -0,0 +1,32 @@ +!c !2 RSS - Real Simple Syndication + +Use the following following url to get an RSS feed. +http://-host-/PageName?responder=rss + +For FitNesse to generate the links properly, the RSS_PREFIX variable must be defined. + +Now lets set the RSS_PREFIX variable in the root page so that it is valid for the entire site. We'll also edit a couple pages. +|Response Requester.| +|uri |status?| +|!-root?responder=saveData&editTime=1&ticketId=2&pageContent=!define+RSS_PREFIX+{http://www.myserver.com/}-!|303| +|!-PageOne?responder=saveData&editTime=1&ticketId=2&pageContent=blah-!|303| +|!-PageTwo?responder=saveData&editTime=1&ticketId=2&pageContent=blah-!|303| + +Get the RSS! +|Response Requester.| +|uri |status?| +|!-?responder=rss-!|200| + +Let's have a look. +|Response Examiner.| +|type |pattern|matches?|wrapped html?| +|contents|<\?xml version="1.0" encoding="UTF-8" standalone="no"\?>|true|| + +Make sure it has all the right values. +|Response Examiner.| +|type |pattern|matches?| +|contents||true| +|contents|!-PageOne-!|true| +|contents|!-http://www.myserver.com/PageOne-!|true| +|contents|!-PageTwo-!|true| +|contents|!-http://www.myserver.com/PageTwo-!|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestRssResponder/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestRssResponder/properties.xml new file mode 100644 index 0000000..0a4fbf0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestRssResponder/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + 1229174216509 + -3582194339243666054 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestShutdown/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestShutdown/content.txt new file mode 100644 index 0000000..7343789 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestShutdown/content.txt @@ -0,0 +1,17 @@ +!-FitNesse-! is started in the set up fixture so it's running, +!|FitNesse Status| +|isRunning?| +|true| + +A Graceful shutdown is initiated by making an HTTP request with the responder=shutdown +!|Response Requester.| +|uri|valid?| +|!-?responder=shutdown-!|true| + +Wait a bit for things to settle down +|Sleep|100| + +Now !-FitNesse-! is no longer running. +!|FitNesse Status| +|isRunning?| +|false| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestShutdown/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestShutdown/properties.xml new file mode 100644 index 0000000..87ca53c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/TestShutdown/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/content.txt new file mode 100644 index 0000000..66a8656 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/content.txt @@ -0,0 +1,4 @@ +The incoming URL determines which responder gets activated. There are many different types of responders (and more every iteration!) +!define TEST_SYSTEM {slim} + +!contents -g -p \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/properties.xml new file mode 100644 index 0000000..a43bfc5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteResponderTests/properties.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + 1234542746248 + 6270647661064016024 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/ComparatorsAreSupported/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/ComparatorsAreSupported/content.txt new file mode 100644 index 0000000..529970d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/ComparatorsAreSupported/content.txt @@ -0,0 +1,16 @@ +|baseline: eg.Division | +|numerator|denominator|quotient?|# Explication | +|10 |2 |5.0 |S1 Base scenario | +|20 |4 | |S2 Same result as base - correct| +| |5 |2.0 |S4 Same numerator as base | +|16 | |8.0 |S5 Same denominator as base | +|22 |7 |~=3.14 |S6 Special comparator | +|11 |2 |4<_<6 |S8 Special comparator | +| | | |S9 Correct but useless duplicate| + + +|baseline: eg.Division | +|numerator|denominator|quotient?|# Explication | +|10 |2 |4<_<6 |S1 Base scenario | +|20 |4 | |S2 Same result as base - correct| +|11 |2 | |S8 Special comparator | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/ComparatorsAreSupported/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/ComparatorsAreSupported/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/ComparatorsAreSupported/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/HowtoIgnoreResultValues/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/HowtoIgnoreResultValues/content.txt new file mode 100644 index 0000000..b284d0c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/HowtoIgnoreResultValues/content.txt @@ -0,0 +1,8 @@ +Given you want to '''ignore''' the results of an output column (like ''quotient'') +Then already in the base scenario the column must be empty. + +|baseline: eg.Division | +|numerator|denominator|quotient?|# Explication | +|10 |2 | |S1 Base scenario - ignore| +|20 |4 |5.0 |S2 correct result | +|20 |6 | |Ignore | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/HowtoIgnoreResultValues/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/HowtoIgnoreResultValues/properties.xml new file mode 100644 index 0000000..266fef9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/HowtoIgnoreResultValues/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/MakingTheBaselineTableTheDefaultDecisionTable/TearDown/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/MakingTheBaselineTableTheDefaultDecisionTable/TearDown/content.txt new file mode 100644 index 0000000..8edcc74 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/MakingTheBaselineTableTheDefaultDecisionTable/TearDown/content.txt @@ -0,0 +1,3 @@ +!define SLIM_DT_BASELINE () + +!include .FitNesse.SuiteAcceptanceTests.TearDown \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/MakingTheBaselineTableTheDefaultDecisionTable/TearDown/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/MakingTheBaselineTableTheDefaultDecisionTable/TearDown/properties.xml new file mode 100644 index 0000000..a16a90f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/MakingTheBaselineTableTheDefaultDecisionTable/TearDown/properties.xml @@ -0,0 +1,11 @@ + + +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/MakingTheBaselineTableTheDefaultDecisionTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/MakingTheBaselineTableTheDefaultDecisionTable/content.txt new file mode 100644 index 0000000..1a63224 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/MakingTheBaselineTableTheDefaultDecisionTable/content.txt @@ -0,0 +1,30 @@ +GIVEN you want that all decision tables behave like the baseline table +AND you don't want to add "baeline:" in each table +THEN define the variable SLIM_DT_BASELINE somewhere on our root page + +!define SLIM_DT_BASELINE (true) + + + +!*> Dependencies + +|import | +|fitnesse.slim.test| + +*! + + + + +Given I have at least one milk remaining +Then I should NOT go to the store + +|should I buy milk | +|cash in wallet|credit card|pints of milk remaining|go to store?| +|0 |no |1 |no | +| | |2 | | +| | |7 | | +|10 | | | | +| |yes | | | +|10 |yes | | | +|1 | |1 | | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/MakingTheBaselineTableTheDefaultDecisionTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/MakingTheBaselineTableTheDefaultDecisionTable/properties.xml new file mode 100644 index 0000000..e11db7c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/MakingTheBaselineTableTheDefaultDecisionTable/properties.xml @@ -0,0 +1,14 @@ + + +true +true + +true +true +true +true + +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/ScenariosAreSupported/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/ScenariosAreSupported/content.txt new file mode 100644 index 0000000..d3080d6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/ScenariosAreSupported/content.txt @@ -0,0 +1,30 @@ +!3 !help + +|scenario |my division|numerator||denominator||my result?| +|setNumerator |@numerator | +|setDenominator|@denominator | +|$myResult= |quotient | + + +Get the Division implementation from the eg package +|Library | +|eg.Division| + + + +|baseline: my division | +|numerator|denominator|my result?|# Explication | +|10 |2 |5.0 |S1 Base scenario | +|20 |4 | |S2 Same result as base - correct| +| |5 |2.0 |S4 Same numerator as base | +|16 | |8.0 |S5 Same denominator as base | +|22 |7 |~=3.14 |S6 Special comparator | +|11 |2 |4<_<6 |S8 Special comparator | +| | | |S9 Correct but useless duplicate| + + +|baseline: my division | +|numerator|denominator|my result?|# Explication | +|10 |2 |4<_<6 |S1 Base scenario | +|20 |4 | |S2 Same result as base - correct| +|11 |2 | |S8 Special comparator | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/ScenariosAreSupported/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/ScenariosAreSupported/properties.xml new file mode 100644 index 0000000..36fa166 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/ScenariosAreSupported/properties.xml @@ -0,0 +1,13 @@ + + +true +true +baseline tables can also be implemented with a scenario +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/TestFailuresAreMarked/TestPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/TestFailuresAreMarked/TestPage/content.txt new file mode 100644 index 0000000..9e56499 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/TestFailuresAreMarked/TestPage/content.txt @@ -0,0 +1,23 @@ +|baseline: eg.Division | +|numerator|denominator|quotient?|# Explication | +|10 |2 |5.0 |S1 Base scenario | +|20 |4 | |S2 Same result as base - correct| +|20 |6 | |W3 Same result as base - wrong | +| |5 |2.0 |S4 Same numerator as base | +|16 | |8.0 |S5 Same denominator as base | | +|22 |7 |~=3.14 |S6 Special comparator | +|9 |3 |7.0 |W7 Wrong result | +|11 |2 |4<_<6 |S8 Special comparator | +| | | |S9 Correct but duplicate | + +Given you want to ignore outputs like ''quotient'' +Then the base scenario must ignore them already + +!define SLIM_DT_BASELINE (true) + +|eg.Division | +|numerator|denominator|quotient?|# Explication | +|10 |2 | |S1 Base scenario - ignore | +|20 |4 |5.0 |S2 correct result | +|20 |6 | |W3 Same result as base - ignore| +| |2 |5.0 |W3 Same result as base - ignore| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/TestFailuresAreMarked/TestPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/TestFailuresAreMarked/TestPage/properties.xml new file mode 100644 index 0000000..c2f8aa4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/TestFailuresAreMarked/TestPage/properties.xml @@ -0,0 +1,6 @@ + + +same content as parent page, for manual execution required + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/TestFailuresAreMarked/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/TestFailuresAreMarked/content.txt new file mode 100644 index 0000000..283af56 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/TestFailuresAreMarked/content.txt @@ -0,0 +1,48 @@ +See also: >TestPage. + +!define TestPageName {Testpage} + +!| script | +|given test page |${TestPageName} | +|and Test System setup is|!define TEST_SYSTEM {slim}${SUT_PATH}| +|and Setup content is |!- +|import | +|fitnesse.slim.test | + +-!| +|and Test content is|!- +# +|baseline: eg.Division | +|numerator|denominator|quotient?|# Explication | +|10 |2 |5.0 |S1 Base scenario | +|20 |4 | |S2 Same result as base - correct| +|20 |6 | |W3 Same result as base - wrong | +| |5 |2.0 |S4 Same numerator as base | +|16 | |8.0 |S5 Same denominator as base | | +|22 |7 |~=3.14 |S6 Special comparator | +|9 |3 |7 |W7 Wrong result | +|11 |2 |4<_<6 |S8 Special comparator | +| | | |S9 Correct but duplicate | + +Given you want to ignore outputs like ''quotient'' +Then the base scenario must ignore them already + +!define SLIM_DT_BASELINE (true) + +|eg.Division | +|numerator|denominator|quotient?|# Explication | +|10 |2.5 | |S1 Base scenario - ignore | +|20 |4 |5.0 |S2 correct result | +|20 |20 | |W3 Same result as base - ignore| +# +-!| +|when page |${TestPageName}|is tested and HTML is extracted | +|then |8 |assertions pass,|2|fail,|2|are ignored|0|exceptions thrown| +|and cell |3.333[^<]* |has result |diff | +|and cell |expected \[5 |has result |fail | +|and cell |3.0 |has result |diff | +|and cell |4.0 |has result |ignore | +|and cell |1.0 |has result |ignore | +|show Symbol |$HTML_Input | +|show Symbol |$HTML_Result | +|get collapsed executon log for page|${TestPageName} | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/TestFailuresAreMarked/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/TestFailuresAreMarked/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/TestFailuresAreMarked/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/content.txt new file mode 100644 index 0000000..000489d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/content.txt @@ -0,0 +1,79 @@ +!2 The aim of the baseline decision table is to make tests easier to read. + +!3 Background +The idea of a [[decision table][.FitNesse.UserGuide.WritingAcceptanceTests.SliM.DecisionTable]] is to demonstrate how different combinations of input parameters generate different results. +To make the impact of each parameter to the output results transparent it is good practice to modify just one parameter from row to row. +For big tables with many input parameters it is often not immediately visible to the reader which parameter changes from row to row. + +!3 Syntax +As a user of the '''baseline decision table''' you specify in the first row below the header in each column the values for all input and output parameters. +This defines your ''base scenario'' and so far this is 100% identical to a normal decision table. +In all following lines you just specify the values which differ from the ''base scenario'' all other columns are left empty. + +This makes your table more readable. It is also easier to maintain in case a value must be changed. +Don't repeat yourself is a good rule even when you write test cases. :) + +!3 Fixture Code +When the baseline decision table is tested all empty columns are filled by the Slim test system with the corresponding values from the ''base scenario''. +In all other aspects the bahviour is identical to the decision table. +Your fixture code is identical to a [[decision table][.FitNesse.UserGuide.WritingAcceptanceTests.SliM.DecisionTable]]. The fixture will not be able to identif any difference between a baseline decision table and a normal [[decision table][.FitNesse.UserGuide.WritingAcceptanceTests.SliM.DecisionTable]]. + +!3 Example +Let's look at an example which you know already from the [[Decision Table][.FitNesse.UserGuide.WritingAcceptanceTests.SliM.DecisionTable]] + +!*> Dependencies + +|import | +|fitnesse.slim.test| + +*! + +Given I have at least one milk remaining +Then I should NOT go to the store + +|baseline: should I buy milk | +|cash in wallet|credit card|pints of milk remaining|go to store?| +|0 |no |1 |no | +| | |2 | | +| | |7 | | +|10 | | | | +| |yes | | | +|10 |yes | | | +|1 | |1 | | + + +Given I have no milk remaining +And a credit card +Then I should go to the store + +|baseline: should I buy milk | +|cash in wallet|credit card|pints of milk remaining|go to store?| +|0 |yes |0 |yes | +|1 | | | | +|2 | | | | + + +Given I have no milk remaining +And at least three $ +Then I should go to the store + +|baseline: should I buy milk | +|cash in wallet|credit card|pints of milk remaining|go to store?| +|3 |no |0 |yes | +|10 | | | | +|7 | | | | +| |yes | | | + +Given I have no milk remaining +And no credit card +And less then three $ +Then I should NOT go to the store + +|baseline: should I buy milk | +|cash in wallet|credit card|pints of milk remaining|go to store?| +|0 |no |0 |no | +|1 | | | | +|2 | | | | + + +!contents -R2 -g -p -f -h \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/BaseLineDecisionTable/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ChainTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ChainTest/content.txt new file mode 100644 index 0000000..116face --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ChainTest/content.txt @@ -0,0 +1,33 @@ +!|import| +|fitnesse.slim.test| +|fitnesse.fixtures| + +!|script|echo fixture| +|$TEST_SLIM=|echo|TestSlim| + +!|script|$TEST_SLIM| +|ensure|echo boolean|true| + +|$TEST_SLIM| +|string|get string arg?| +|Bob|Bob| + +!|script|echo fixture| +|$QUERY=|echo|Query| + +!|Query:Test$QUERY|1| +|n|2n| +|1|2| + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ChainTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ChainTest/properties.xml new file mode 100644 index 0000000..3e87512 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ChainTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ChainWithInstanceTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ChainWithInstanceTest/content.txt new file mode 100644 index 0000000..70db34a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ChainWithInstanceTest/content.txt @@ -0,0 +1,45 @@ +!|import | +|fitnesse.slim.test| + +The fixture chaining with instances allows you to store an object instance in a Slim symbol and to use the instance as the table actor for an arbitrary Slim table. +Here createTestSlimWithString(string) is a factory method that creates a new !-TestSlim-! instance, sets the given string and returns the object. + +see SlimSymbolCanHoldInstanceUsedAsParameter + +!|script |test slim | +|$TEST_SLIM_INSTANCE=|create test slim with string|Uncle| +|start |$TEST_SLIM_INSTANCE | +|check |get string arg |Uncle| + +We can use it for a decision table. + +|$TEST_SLIM_INSTANCE| +|get string arg? | +|Uncle | + +The !-SlimHelperLibrary-! is a class that is automatically available as a library fixture. It contains methods to get and set the script table actor in the Slim !-StatementExecutor-!. + + * getFixture() returns the current table actor + * pushFixture() gets the current table actor and pushes it onto a stack + * popFixture() pops the actor from the stack and sets it in the !-StatementExecutor-! + +The pushFixture() and popFixture() methods can be used to have scenarios that change the current actor, but restore it at the end of the scenario. +So a scenario can behave more like a sub routine with local scope (but is not limited to it). + +!|scenario |do something with|name|and restore old fixture| +|push fixture | +|start |test slim | +|set string |@name | +|check |get fixture |TestSlim: 0, @name | +|check |get string arg |@name | +|$@name_INSTANCE=|get fixture | +|pop fixture | + +!|script |test slim |2 | +|set string |Uncle | +|check |get fixture |TestSlim: 2, Uncle | +|do something with|Bob |and restore old fixture| +|check |get string arg|Uncle | + +!|script|$Bob_INSTANCE | +|check |get string arg|Bob| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ChainWithInstanceTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ChainWithInstanceTest/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ChainWithInstanceTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineAliasInPluginTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineAliasInPluginTest/content.txt new file mode 100644 index 0000000..7b62c12 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineAliasInPluginTest/content.txt @@ -0,0 +1,20 @@ +You can [[Define aliases][DefineAliasTest]] via tables in the wiki. It's also possible to add aliases via plugins. This has the advantage that the wiki is not cluttered with techical concerns. + +To demonstrate this a class ''!-fitnesse.testsystems.slim.CustomTableAliasPlugin-!'' has been loaded in SetUp. + +This plugin makes an alias from ''aliased echo fixture'' to the good old echo fixture. + +So the following test table works: + +!|script| +|given page|AliasTest|with content|!-!define TEST_SYSTEM {slim} + +| import | +| fitnesse.slim.test | + +| script : my requirement | +| check | do business logic | 42 | +-!| +|check|request page|AliasTest?test|200| +|ensure|content contains|class="pass"| +|show|content| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineAliasInPluginTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineAliasInPluginTest/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineAliasInPluginTest/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineAliasTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineAliasTest/content.txt new file mode 100644 index 0000000..d216ffc --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineAliasTest/content.txt @@ -0,0 +1,4 @@ +|import | +|fitnesse.slim.test| + +!include .FitNesse.UserGuide.WritingAcceptanceTests.SliM.DefineAlias \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineAliasTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineAliasTest/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineAliasTest/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineTableTypeTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineTableTypeTest/content.txt new file mode 100644 index 0000000..f3744f2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineTableTypeTest/content.txt @@ -0,0 +1,16 @@ +Purpose: Checks that the Define Table Type table works + +By default table should be parsed as a decision table. +|Table Or Decision Fixture | +|parsing as? | +|Parsed as Decision fixture | + + +However after this table it should be parsed as a Table: table. + +|Define Table Type | +| Table or Decision Fixture | as Table | + + +|Table Or Decision Fixture | +|parsing as? | Parsed as Table fixture | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineTableTypeTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineTableTypeTest/properties.xml new file mode 100644 index 0000000..3e87512 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/DefineTableTypeTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ErikPragtBug/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ErikPragtBug/content.txt new file mode 100644 index 0000000..8b2939a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ErikPragtBug/content.txt @@ -0,0 +1,8 @@ +!|script|fitnesse.slim.test.TestSlim| +|$VALUE=|echo string|Bob|| +|$VALUEX=|echo string|bill| + +!|script| +|check|echo string|$VALUE|Bob| +|check|echo string|$VALUEX|bill| +|check|echo string|$VALUE $VALUEX|Bob bill| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ErikPragtBug/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ErikPragtBug/properties.xml new file mode 100644 index 0000000..7a1e81d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ErikPragtBug/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + testSuite + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/HashTableWithHtmlContent/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/HashTableWithHtmlContent/content.txt new file mode 100644 index 0000000..a36ea78 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/HashTableWithHtmlContent/content.txt @@ -0,0 +1,9 @@ +Values in hash tables should be handled in the same fashion as normal values passed to Slim. +| script | hash fixture | +| send | !{script:bold} | as hash | +| check | hash | script | is | bold | + +For comparison, this is how it works with a normal value: + +!| script | echo fixture | +| echo | bold | and log | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/HashTableWithHtmlContent/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/HashTableWithHtmlContent/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/HashTableWithHtmlContent/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/ShouldConvertHashWidgetToHashTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/ShouldConvertHashWidgetToHashTable/content.txt new file mode 100644 index 0000000..e72d053 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/ShouldConvertHashWidgetToHashTable/content.txt @@ -0,0 +1,4 @@ +|script| hash fixture | +|send|!{name:bob, address:here}|as hash| +|check|hash|name|is|bob| +|check|hash|address|is|here| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/ShouldConvertHashWidgetToHashTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/ShouldConvertHashWidgetToHashTable/properties.xml new file mode 100644 index 0000000..3e87512 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/ShouldConvertHashWidgetToHashTable/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/ShouldReturnHashTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/ShouldReturnHashTable/content.txt new file mode 100644 index 0000000..035d1d5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/ShouldReturnHashTable/content.txt @@ -0,0 +1,3 @@ +|script| hash fixture | +|send|!{name:bob, address:here}|as hash| +|check|hash|!{address:here, name:bob}| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/ShouldReturnHashTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/ShouldReturnHashTable/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/ShouldReturnHashTable/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/content.txt new file mode 100644 index 0000000..f0e96e5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/content.txt @@ -0,0 +1 @@ +!contents \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/properties.xml new file mode 100644 index 0000000..e475416 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HashTableTests/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/ImplementDynamicDecisionTableWithHybridTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/ImplementDynamicDecisionTableWithHybridTable/content.txt new file mode 100644 index 0000000..5e7317e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/ImplementDynamicDecisionTableWithHybridTable/content.txt @@ -0,0 +1,34 @@ +|import | +|fitnesse.slim.test| + +!3 The Dynamic Decision Table is just a special case of the Hybrid Decision table. +With the following rules for getter and setter the behavior of Dynamic Decision Tables is achieved. +!define SLIM_DT_GETTER (!- +{ +"FormatVersion":"1.0", +"MethodExtractorRules":[ + { + "Scope":".+", + "TargetName":"get", + "Parameters":"$0" + } + ] +} +-!) +!define SLIM_DT_SETTER (!- +{ +"FormatVersion":"1.0", +"MethodExtractorRules":[ + { + "Scope":".+", + "TargetName":"set", + "Parameters":"$0" + } + ] +} +-!) +|dt: add up change | +|# description |1c |5c|10c|25c|50c|$1|total cents?|$ total? | +|some simple addition |2 |2 |4 |0 |0 |0 |52 |0.52 | +|save the total cents in a symbol |56 |0 |0 |0 |1 |20|$totalCents=|21.06 | +|now use the total cents that were stored|$totalCents|0 |0 |0 |0 |10|3106 |~=31.1|An example for Value Comparisons| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/ImplementDynamicDecisionTableWithHybridTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/ImplementDynamicDecisionTableWithHybridTable/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/ImplementDynamicDecisionTableWithHybridTable/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/MethodExtractorRuleTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/MethodExtractorRuleTest/content.txt new file mode 100644 index 0000000..1847e5a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/MethodExtractorRuleTest/content.txt @@ -0,0 +1,103 @@ +!*> Setup + +|import | +|fitnesse.testsystems.slim.tables| + +!|scenario |Test Json Method Extractor Configuration _ _ _ _|configuration, example column name, generated method name?,parameter list?| +|start |Method Extractor |@configuration | +|$RR= |findRule |@exampleColumnName | +|start |$RR | +|$generatedMethodName=|getMethod Name | +|$generatedMethodName=|get Disgraced Method Name | +|$parameterList= |getParameters | + +!|scenario |Test Object Method Extractor Configuration _ _ _|example column name, generated method name?,parameter list?| +|start |$TestMethodExtractorConfiguration | +|$RR= |findRule |@exampleColumnName | +|start |$RR | +|$generatedMethodName=|getMethod Name | +|$generatedMethodName=|get Disgraced Method Name | +|$parameterList= |getParameters | + + +*! + + +!3 Build a JSON configuration string + +!4 Hint: use this table to construct your Json expression. + +!|script |Method Extractor | +|# |Scope Pattern |Target Name |Parameter List| +|add; |Cell\s+(\w+):(\d+)\s* |getRowColumn|$2,$1 | +|# used a named group in the pattern | +|add; |Named\s+Cell\s+(?\w+):(?\d+)\s*|getRowColumn|$row,$column | +|# used a fixed value as parameter | +|add; |Header\s+Column\s+(\w+)\s* |getRowColumn|0,$1 | +|# Default (match all pattern) catches every column name | +|add; |.+ |set |$0 | +|# The first matching rule is used. The below will never be used as it comes after the default rule | +|add; |Last.* |Unreachable | | +|show collapsed |to Json | +|$TestMethodExtractorConfiguration=|get fixture | + +!3 Test the above defined configuration + +!4 Hint: use this table to test your own definitions. + +|Test Object Method Extractor Configuration | +|example column name|generated method name?|parameter list? | +|hallo |set |[hallo] | +|Cell A:5 |getRowColumn |[5, A] | +|Named Cell BX:451 |getRowColumn |[451, BX] | +|Header Column F |getRowColumn |[0, F] | +|Cell 7 |set |[Cell 7] | +|Last and Least |set |[Last and Least]| + + +!3 Test a JSON configuration string + + + +|Test Json Method Extractor Configuration|having|configuration|!- +{ +"FormatVersion":"1.0", +"MethodExtractorRules":[ + { + "Scope":"char at (\\d)", + "TargetName":"char at", + "Parameters":"$1" + }, + { + "Scope":"index of '(\\w)'", + "TargetName":"index of", + "Parameters":"$1" + }, + { + "Scope":"Element\\s(\\d)", + "TargetName":"get", + "Parameters":"$1" + }, + { + "Scope":"property\\s+(\\w*)\\s*", + "TargetName":"get property", + "Parameters":"$1" + }, + { + "Scope":"has Value\\s+'(\\w*)'\\s*", + "TargetName":"contains Value", + "Parameters":"$1" + }, + { + "Scope":".+", + "TargetName":"set $0", + "Parameters":"" + } + ] +} +-!| +|example column name|generated method name?|parameter list?| +|hallo |setHallo |[] | +|property abc |getProperty |[abc] | +|Element 5 |get |[5] | + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/MethodExtractorRuleTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/MethodExtractorRuleTest/properties.xml new file mode 100644 index 0000000..266fef9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/MethodExtractorRuleTest/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/SetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/SetUp/content.txt new file mode 100644 index 0000000..f8705ea --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/SetUp/content.txt @@ -0,0 +1,7 @@ +!|Import | +|fitnesse.fixtures| + + +|Library | +|echo fixture| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/SetUp/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/SetUp/properties.xml new file mode 100644 index 0000000..a16a90f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/SetUp/properties.xml @@ -0,0 +1,11 @@ + + +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/TearDown/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/TearDown/content.txt new file mode 100644 index 0000000..2bf56e9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/TearDown/content.txt @@ -0,0 +1,3 @@ +Reset variables to get normal behaviour back. +!define SLIM_DT_GETTER () +!define SLIM_DT_SETTER () diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/TearDown/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/TearDown/properties.xml new file mode 100644 index 0000000..542173d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/TearDown/properties.xml @@ -0,0 +1,13 @@ + + + + +Reset DT Getter and Setter variables + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/content.txt new file mode 100644 index 0000000..22a7e70 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/content.txt @@ -0,0 +1,114 @@ +The Hybrid Decision Table is a combination of the Decision Table and the Dynamic Decision Table. +A decision table requires for each table column the definition of a method. +This is impractical when you deal with structured data that has a varying size like: hash maps, XML, properties, database tables, etc. +The number of methods you need to write could be infinite. + +A dynamic decision table has just one method which is called for all columns and your fixture has to do the dispatching. +This solves the above problem but dispatching should be done by the test system and not by your fixture. + +Sometimes you want both features in one table and that is when you use the Hybrid Decision table. + +The Hybrid Decision Table allows the methods called for each column to be +redefined and method parameters can be extracted from the column names. + + + +Example + +!*> Setup + +|import | +|fitnesse.slim.test| +|java.util | + +!5 define some string variables (just to show that this is supported) +|script: Test Query|5 | +|$S1= |echo|abcdefghijklmnopqrstuvwxyz | +|$S2= |echo|123456789 | +|$S3= |echo|"The fox jumps over the wall."| + +!define SLIM_DT_GETTER (!- +{ +"FormatVersion":"1.0", +"MethodExtractorRules":[ + { + "Scope":"property\\s+(\\w*)\\s*", + "TargetName":"get property", + "Parameters":"$1" + }, + { + "Scope":"has Value\\s+'(\\w*)'\\s*", + "TargetName":"contains Value", + "Parameters":"$1" + } + ] +} +-!) +!define SLIM_DT_SETTER (!- +{ +"FormatVersion":"1.0", +"MethodExtractorRules":[ + { + "Scope":"property\\s+(\\w*)\\s*", + "TargetName":"set property", + "Parameters":"$1" + }, + { + "Scope":".+", + "TargetName":"$0", + "Parameters":"" + } + ] +} +-!) + +*! + +!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 +|Properties | +|#|property a|property b |size?|key set?|property a?|property b?|to string? |has Value '123456789' ?| +| |$S1 |123456789 |2 |[b, a] |$S1 |123456789 |{b=123456789, a=abcdefghijklmnopqrstuvwxyz} |true | +| |$S2 |"The fox jumps over the wall."|2 |[b, a] |123456789 |$S3 |{b="The fox jumps over the wall.", a=123456789} |true | +| |$S3 |abcdefghijklmnopqrstuvwxyz |2 |[b, a] |$S3 |$S1 |{b=abcdefghijklmnopqrstuvwxyz, a="The fox jumps over the wall."}|false | + +!4 Test Case with 3 properties added and 2 expected +|Properties | +|#|property NEW|property a|property b|size?|key set?|property NEW?|property b?|to string? |has Value '123456789' ?|has Value '!-FitNesse-!'?| +| |Hello |$S1 |$S2 |3 | |Hello |123456789 | |true |false | +| |!-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 | + + +!4 Look in the collapsed setup how the mapping between column names and method names is done. +The magic is done with two variables: +SLIM_DT_SETTER - for input columns +SLIM_DT_GETTER - for output columns + +For each variable you can define a list of ''Method Extractor Rules'' in JSON format. A Method Extractor Rule has 3 properties: +1. Scope - a regular expression which identifies all columns for which this extractor should be applied. +2. Target Name - a replacement string for the "Column Name" regular expression. This will be passed to the Disgracer to generate the final method name. +3. Parameters - a colon separated list of parameters passed to the method called. + +The list of rules is preceded with a version number ''Format Version''. This must currently be always "1.0". +Future versions might define additional features and will require a different version number. + +If no Method Extractor Rule matches the current column name than the default rules of the Decision Table are used ("set " + column name). + +The Hybrid Decision Table is no new table type but it modifies the behavior of the decision table with the help of the above variables. +This has the advantage that you don't need to specify the table type in your test cases +and leaves the decision to the implementer of the test cases if he wants to use a hybrid, dynamic or normal decision table. + + +!4 IMPORTANT: to avoid side effects always add a >TearDown page to reset the mappings to the defaults. + + +!2 Warning: The Hybrid Decision Table is still experimental +The way how the method names are configured (via variables) might change. +Be prepared to refactor your tests if you use this feature. +Your ideas for a final solution are welcome please give feedback on the [[!-FitNesse-! mail group][https://groups.yahoo.com/neo/groups/fitnesse/info]] + + + +Further Reading: +!contents -R2 -g -p -f -h \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/properties.xml new file mode 100644 index 0000000..266fef9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/HybridDecisionTable/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/IgnoredTestsShouldColorGray/TestPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/IgnoredTestsShouldColorGray/TestPage/content.txt new file mode 100644 index 0000000..e1d5ebe --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/IgnoredTestsShouldColorGray/TestPage/content.txt @@ -0,0 +1,17 @@ +!define TEST_SYSTEM {slim} + +!|import| +|fitnesse.slim.test| + +!|Scenario|Stop Test| +|start|ConstructorThrows|stop test| + +!|Scenario|Not Executed|MESSAGE | +|check|echo|@MESSAGE|cannot fail @MESSAGE| + +!|Script| +|Stop Test| +|Not Executed and should be ignored| + +!|Script| +|Not Executed and should be ignored as well| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/IgnoredTestsShouldColorGray/TestPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/IgnoredTestsShouldColorGray/TestPage/properties.xml new file mode 100644 index 0000000..bd2421b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/IgnoredTestsShouldColorGray/TestPage/properties.xml @@ -0,0 +1,14 @@ + + + + + The test page, as stated in the table + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/IgnoredTestsShouldColorGray/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/IgnoredTestsShouldColorGray/content.txt new file mode 100644 index 0000000..d8e7767 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/IgnoredTestsShouldColorGray/content.txt @@ -0,0 +1,34 @@ +See also: >TestPage. + +!define TestPageName {Testpage} + +!| script | +|given test page|${TestPageName}| +|and Test System setup is|!define TEST_SYSTEM {slim}${SUT_PATH}| +|and Setup content is|!- +!|import| +|fitnesse.slim.test| + +!|Scenario|Stop Test| +|start|ConstructorThrows|stop test| + +!|Scenario|Not Executed|MESSAGE | +|check|echo|@MESSAGE|cannot fail @MESSAGE| + +-!| +|and Test content is |!- +!|Script| +|Stop Test| +|Not Executed and should be ignored| +!|Script| +|Not Executed and should be ignored as well| +-!| +|when page|${TestPageName}| is tested and HTML is extracted| +|then |\d | assertions pass, | 0| fail, | 0| are ignored | 1 | exceptions thrown| +|and cell |Stop Test| has result | error| +|and cell |Not Executed and should be ignored | has result | ignore| +|and cell |Not Executed and should be ignored as well| has result | ignore| +|and cell |Test not run | has result | ignore| +|show Symbol |$HTML_Input| +|show Symbol |$HTML_Result| +|get collapsed executon log for page|${TestPageName}| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/IgnoredTestsShouldColorGray/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/IgnoredTestsShouldColorGray/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/IgnoredTestsShouldColorGray/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/HowToAddFixturesWithParametersToTheLibrary/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/HowToAddFixturesWithParametersToTheLibrary/content.txt new file mode 100644 index 0000000..695e559 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/HowToAddFixturesWithParametersToTheLibrary/content.txt @@ -0,0 +1,35 @@ +!|import | +|fitnesse.slim.test| + +!2 Create a fixture with constructor parameters + +Negative Test: This must raise an exception as the method query can not be found +!|script|echo fixture | +|check |echo |AAA |AAA | +|#check |query|[[[n, 1], [2n, 2]], [[n, 2], [2n, 4]]]| + +!3 The entries in a library table can have constructor parameters in the same way as a script fixture. + +!|library| +|test query|2| + +!|script|echo fixture | +|check |echo |BBB |BBB | +|check |query|[[[n, 1], [2n, 2]], [[n, 2], [2n, 4]]]| + +If you need further set up by calling methods of the fixture before adding it to the library you can use synbols to do this. +At the end assign the fixture itself to a symbol. + +!|script|test slim|47| +|set string |Hello FitNesse | +|$ts= |get fixture | + + +Now add the previously created fixture symbol to the library +|library| +|$ts | + +And here we go: We can use the methods of the fixture in any script +!|script|echo fixture | +|check |echo |CCC |CCC | +|check |getStringArg|Hello FitNesse| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/HowToAddFixturesWithParametersToTheLibrary/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/HowToAddFixturesWithParametersToTheLibrary/properties.xml new file mode 100644 index 0000000..1e3157c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/HowToAddFixturesWithParametersToTheLibrary/properties.xml @@ -0,0 +1,13 @@ + + +true +true +six42 +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LastLibraryPreceedsEarlierLibraryTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LastLibraryPreceedsEarlierLibraryTest/content.txt new file mode 100644 index 0000000..b918994 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LastLibraryPreceedsEarlierLibraryTest/content.txt @@ -0,0 +1,15 @@ +!*> Extra Import + +!|Import| +|fitnesse.slim.test.library| + +*! + +|Library| +|echo support| +|special echo support| + +-|script|library fixture| +|given multiple libraries with the same methods| +|when such a method is called| +|then the last library created takes precedence over earlier created libraries| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LastLibraryPreceedsEarlierLibraryTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LastLibraryPreceedsEarlierLibraryTest/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LastLibraryPreceedsEarlierLibraryTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/LibraryInSetUpAndPageTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/LibraryInSetUpAndPageTest/content.txt new file mode 100644 index 0000000..2d918ed --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/LibraryInSetUpAndPageTest/content.txt @@ -0,0 +1,8 @@ +|Library| +|echo support| + +-|script| +|given multiple libraries with the same methods| +|when such a method is called| +|then the one one installed in this page takes precedence over the one in the setup page| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/LibraryInSetUpAndPageTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/LibraryInSetUpAndPageTest/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/LibraryInSetUpAndPageTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/LibraryInSetUpTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/LibraryInSetUpTest/content.txt new file mode 100644 index 0000000..b8238c7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/LibraryInSetUpTest/content.txt @@ -0,0 +1,4 @@ +|script|library fixture| +|given a library installed in the setup page| +|when a method not present on the fixture is called| +|then is should have been invoked on the library in the setup page| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/LibraryInSetUpTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/LibraryInSetUpTest/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/LibraryInSetUpTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/SetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/SetUp/content.txt new file mode 100644 index 0000000..9f1fd38 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/SetUp/content.txt @@ -0,0 +1,4 @@ +!include -c .FitNesse.SuiteAcceptanceTests.SuiteSlimTests.LibrarySuite.SetUp + +|Library| +|library in set up| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/SetUp/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/SetUp/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/SetUp/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/content.txt new file mode 100644 index 0000000..f0e96e5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/content.txt @@ -0,0 +1 @@ +!contents \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/properties.xml new file mode 100644 index 0000000..6e9e1e6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/LibraryInSetUpSuite/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/OneLibraryTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/OneLibraryTest/content.txt new file mode 100644 index 0000000..774ddcf --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/OneLibraryTest/content.txt @@ -0,0 +1,10 @@ +| Library | +| echo support | + +!| script | library fixture | + +-| script | +| given installed library echo support | +| when a method not present on the fixture is called | +| then it should be called on the installed library | + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/OneLibraryTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/OneLibraryTest/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/OneLibraryTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/ScenarioLibrary/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/ScenarioLibrary/content.txt new file mode 100644 index 0000000..3772852 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/ScenarioLibrary/content.txt @@ -0,0 +1,30 @@ +!|scenario|given installed library echo support| +|note|Library is installed via Library table above| + +!|scenario|when a method not present on the fixture is called| +|echo| + +!|scenario|then it should be called on the installed library| +|ensure|echo support called| + +!|scenario|given multiple libraries with the same methods| +|note|See for installed libraries the Library table above| + +!|scenario|when such a method is called| +|echo| + +!|scenario|then the last library created takes precedence over earlier created libraries| +|ensure|special echo support called| +|reject|echo support called| + +!|scenario|given a library installed in the setup page| +|given installed library echo support| + +!|scenario|then is should have been invoked on the library in the setup page| +|ensure|echo in set up library called| + +!|scenario|then the one one installed in this page takes precedence over the one in the setup page| +|ensure|echo support called| +|reject|echo in set up library called| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/ScenarioLibrary/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/ScenarioLibrary/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/ScenarioLibrary/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/SetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/SetUp/content.txt new file mode 100644 index 0000000..fc5e045 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/SetUp/content.txt @@ -0,0 +1,5 @@ +!include -c .FitNesse.SuiteAcceptanceTests.SuiteSlimTests.SetUp + +!|Import| +|fitnesse.slim.test.library| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/SetUp/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/SetUp/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/SetUp/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/content.txt new file mode 100644 index 0000000..990fb6f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/content.txt @@ -0,0 +1 @@ +!contents -R2 -g -p -f -h \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/properties.xml new file mode 100644 index 0000000..6e9e1e6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/LibrarySuite/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/MultiByteCharsInSlim/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/MultiByteCharsInSlim/content.txt new file mode 100644 index 0000000..0840324 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/MultiByteCharsInSlim/content.txt @@ -0,0 +1,8 @@ +|import| +|fitnesse.slim.test| + +!|test slim|3| +|string|getStringArg?| +|Bob|Bob| +|Köln|Köln| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/MultiByteCharsInSlim/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/MultiByteCharsInSlim/properties.xml new file mode 100644 index 0000000..7a1e81d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/MultiByteCharsInSlim/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + testSuite + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ParameterizedScenarios/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ParameterizedScenarios/content.txt new file mode 100644 index 0000000..9b3855b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ParameterizedScenarios/content.txt @@ -0,0 +1,57 @@ +![: +scenario:login user _ with password _:user name, password: +check:echo:@userName:Bob +check:echo:@password:xyzzy +]! + +![ script +login user Bob with password xyzzy +]! + +!|scenario|beat|name|with a|object| +|check|echo|@name|Bill| +|check|echo|@object|noodle| + +![ script +beat Bill with a noodle +]! + +!|login user with password| +|user name|password| +|Bob|xyzzy| + +!|script| +|login user|Bob|with password|xyzzy| + +!|script| +|login user with password;|Bob|xyzzy| + +!3 Scenarios can be defined without a filler name between the underscores +|scenario | my division _ _ _|numerator, denominator, quotient| +|setNumerator| @numerator| +|setDenominator| @denominator| +|check | quotient| @quotient| + +Use the Division class from the eg library to implement the scenario +|Library| +|eg.Division| + +!4 Test the scenario with a decision table +| my division | +| # | numerator | denominator | quotient | +| any comment| 10 | 2 | 5.0 | + +You can change the order of the columns +| my division | +|quotient | # | numerator | denominator | +| 5.0| any comment| 10 | 2 | + + +!4 Test the scenario with a script +the order of the parameters can't be changed! +|script| +|my division 20 5 4.0| +|my division |6|| 3|| 2.0| +|my division; |35 |5| 7.0 | + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ParameterizedScenarios/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ParameterizedScenarios/properties.xml new file mode 100644 index 0000000..dd2290e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ParameterizedScenarios/properties.xml @@ -0,0 +1,13 @@ + + + + + six42 + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/SetContextValue/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/SetContextValue/content.txt new file mode 100644 index 0000000..2261998 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/SetContextValue/content.txt @@ -0,0 +1,14 @@ +|import| +|fitnesse.slim.test| + +!| Query:SplitFixture | Bob,100;John,200 | +|1|2| +|Bob|$Y=| +|$Z=|200| + +|script|test slim|$Y| +|check|return Constructor Arg|100| + +|script|test slim|0| +|set string|$Z| +|check|get string arg|John| \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/SetContextValue/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/SetContextValue/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/SetContextValue/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/TestMatching/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/TestMatching/content.txt new file mode 100644 index 0000000..2870416 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/TestMatching/content.txt @@ -0,0 +1,42 @@ +!| Query:SplitFixture | Bob;Bill;Ben | +| 1 | +| Bob | +| Bill | +| Ben | + +!| Query:SplitFixture | Bob;Bill;Ben | +| 1 | +| Bob | +| Ben | +| Bill | + +!| Subset Query:SplitFixture | Bob;Bill;Ben | +| 1 | +| Ben | +| Bill | + +!| Query:SplitFixture | Bob,Martin;Bill,Jones;Ben,Jacobs | +| 1 | 2 | +| Bob | Martin | +| Bill | Jones | +| Ben | Jacobs | + +!| Query:SplitFixture | Bob,Martin;Bill,Jones;Ben,Jacobs | +| 1 | 2 | +| Bob | =~/Mar.*/ | +| Bill | =~/one/ | +| =~/en/ | Jacobs | + +!| Query:SplitFixture | 1.1,2.3;5.5,6.9;3.1,5 | +| 1 | 2 | +| 1.1 | <3 | +| >3 | 5<_<7 | +| ~=3 | !=6 | + +!define TABLE {| table | +| value | +} + +| Query:split fixture | ${TABLE} | +| 1 | +| ${TABLE} | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/TestMatching/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/TestMatching/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/TestMatching/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/content.txt new file mode 100644 index 0000000..f0e96e5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/content.txt @@ -0,0 +1 @@ +!contents \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/properties.xml new file mode 100644 index 0000000..6e9e1e6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/QueryTableSuite/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/RegularExpressionMatching/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/RegularExpressionMatching/content.txt new file mode 100644 index 0000000..435dcf6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/RegularExpressionMatching/content.txt @@ -0,0 +1,8 @@ +-!|script| +|check|echo|Bob|=~/Bob/| +|check|echo|My name is Bob Martin.|=~/Bob/| +|check|echo|The name of Bob shall persist.|=~/B.b/| +|check not|echo|Pete|=~/Bob/| + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/RegularExpressionMatching/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/RegularExpressionMatching/properties.xml new file mode 100644 index 0000000..3e87512 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/RegularExpressionMatching/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/BlankCellsInNestedScenariosShouldWork/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/BlankCellsInNestedScenariosShouldWork/content.txt new file mode 100644 index 0000000..18f6a2d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/BlankCellsInNestedScenariosShouldWork/content.txt @@ -0,0 +1,17 @@ +!note Lighthouse issue #162. Found by student in Oslo, October, 2009 + +It looks like one-word scenario names, coupled with at least one unnamed argument causes !-FitNesse-! to mistake the scenario invocation for a method invocation. + +In the tables below, the scenario f should be called by the second table, but instead !-FitNesse-! tries to find method f for the current script actor. + +This test will pass if this bug is fixed. Otherwise you'll get !style_code(!-f Method f[2] not found in fitnesse.fixtures.PageDriver-!). + +!|scenario|f|a||b| +|start|fitnesse.slim.test.TestSlim| + +|script| +|f|1||2| +|pass| + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/BlankCellsInNestedScenariosShouldWork/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/BlankCellsInNestedScenariosShouldWork/properties.xml new file mode 100644 index 0000000..3e87512 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/BlankCellsInNestedScenariosShouldWork/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/BrotherScenarioLibraryIsIncluded/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/BrotherScenarioLibraryIsIncluded/content.txt new file mode 100644 index 0000000..3ba8a62 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/BrotherScenarioLibraryIsIncluded/content.txt @@ -0,0 +1,4 @@ +!|script| +|create page|ScenarioLibrary|with content|brother content| +|given slim test page|TestPage| +|it should contain|brother content| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/BrotherScenarioLibraryIsIncluded/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/BrotherScenarioLibraryIsIncluded/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/BrotherScenarioLibraryIsIncluded/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/DoesntFailIfScenariosIncludedTwice/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/DoesntFailIfScenariosIncludedTwice/content.txt new file mode 100644 index 0000000..89c96aa --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/DoesntFailIfScenariosIncludedTwice/content.txt @@ -0,0 +1,4 @@ + +!|script| +|given page|CrazyPage|with content|brother content| +|it should contain|brother content| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/DoesntFailIfScenariosIncludedTwice/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/DoesntFailIfScenariosIncludedTwice/properties.xml new file mode 100644 index 0000000..65bc7b3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/DoesntFailIfScenariosIncludedTwice/properties.xml @@ -0,0 +1,6 @@ + + + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/NoScenarioSectionIfThereAreNone/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/NoScenarioSectionIfThereAreNone/content.txt new file mode 100644 index 0000000..c7bf1dc --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/NoScenarioSectionIfThereAreNone/content.txt @@ -0,0 +1,5 @@ +!|script| +|given slim test page|TestPage| +|it should not contain|Scenario Libraries| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/NoScenarioSectionIfThereAreNone/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/NoScenarioSectionIfThereAreNone/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/NoScenarioSectionIfThereAreNone/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesAreIncludedInTheCorrectOrder/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesAreIncludedInTheCorrectOrder/content.txt new file mode 100644 index 0000000..f377901 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesAreIncludedInTheCorrectOrder/content.txt @@ -0,0 +1,13 @@ +!|script| +|create page|GrandParentPage|with content|| +|create page|GrandParentPage.ParentPage|with content|| +|create page|ScenarioLibrary|with content|granduncy| +|create page|GrandParentPage.ScenarioLibrary|with content|uncle| +|create page|GrandParentPage.ParentPage.ScenarioLibrary|with content|brother| +|given slim test page|GrandParentPage.ParentPage.TestPage| +|it should contain|brother|in line|BROTHER_LINE| +|it should contain|uncle|in line|UNCLE_LINE| +|it should contain|granduncy|in line|GRAND_UNCLE_LINE| +|the line|BROTHER_LINE|should come after|UNCLE_LINE| +|the line|UNCLE_LINE|should come after|GRAND_UNCLE_LINE| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesAreIncludedInTheCorrectOrder/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesAreIncludedInTheCorrectOrder/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesAreIncludedInTheCorrectOrder/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOnlyIncludedInTestPages/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOnlyIncludedInTestPages/content.txt new file mode 100644 index 0000000..09a20a3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOnlyIncludedInTestPages/content.txt @@ -0,0 +1,6 @@ +!|script| +|create page|ScenarioLibrary|with content|| +|given page|SomePage| +|it should not contain|Scenario Libraries| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOnlyIncludedInTestPages/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOnlyIncludedInTestPages/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOnlyIncludedInTestPages/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibrary/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibrary/content.txt new file mode 100644 index 0000000..c8c76ae --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibrary/content.txt @@ -0,0 +1,8 @@ +!|scenario|one| +|$ONE=|echo|1| + +!|scenario|two| +|$TWO=|echo|1| + +!|scenario|three| +|$THREE=|echo|1| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibrary/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibrary/properties.xml new file mode 100644 index 0000000..a16a90f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibrary/properties.xml @@ -0,0 +1,11 @@ + + +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibrary/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibrary/content.txt new file mode 100644 index 0000000..06c09ed --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibrary/content.txt @@ -0,0 +1,5 @@ +!|scenario|two| +|$TWO=|echo|2| + +!|scenario|three| +|$THREE=|echo|2| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibrary/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibrary/properties.xml new file mode 100644 index 0000000..a16a90f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibrary/properties.xml @@ -0,0 +1,11 @@ + + +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/ScenarioLibrary/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/ScenarioLibrary/content.txt new file mode 100644 index 0000000..e4acdbd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/ScenarioLibrary/content.txt @@ -0,0 +1,2 @@ +!|scenario|three| +|$THREE=|echo|3| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/ScenarioLibrary/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/ScenarioLibrary/properties.xml new file mode 100644 index 0000000..a16a90f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/ScenarioLibrary/properties.xml @@ -0,0 +1,11 @@ + + +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/ScenarioLibraryOrderIsCorrect/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/ScenarioLibraryOrderIsCorrect/content.txt new file mode 100644 index 0000000..a048401 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/ScenarioLibraryOrderIsCorrect/content.txt @@ -0,0 +1,7 @@ +!|script| +|one| +|two| +|three| +|check|echo|$ONE|1| +|check|echo|$TWO|2| +|check|echo|$THREE|3| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/ScenarioLibraryOrderIsCorrect/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/ScenarioLibraryOrderIsCorrect/properties.xml new file mode 100644 index 0000000..b4f4eb3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/ScenarioLibraryOrderIsCorrect/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/content.txt new file mode 100644 index 0000000..f0e96e5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/content.txt @@ -0,0 +1 @@ +!contents \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/properties.xml new file mode 100644 index 0000000..a16a90f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/ScenarioLibraryOrderTestParent/properties.xml @@ -0,0 +1,11 @@ + + +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/content.txt new file mode 100644 index 0000000..f0e96e5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/content.txt @@ -0,0 +1 @@ +!contents \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/properties.xml new file mode 100644 index 0000000..3232497 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/ScenarioLibraryOrderSuite/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/content.txt new file mode 100644 index 0000000..f0e96e5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/content.txt @@ -0,0 +1 @@ +!contents \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/properties.xml new file mode 100644 index 0000000..a16a90f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibrariesOrderTests/properties.xml @@ -0,0 +1,11 @@ + + +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/ScenarioLibrary/IncludedPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/ScenarioLibrary/IncludedPage/content.txt new file mode 100644 index 0000000..20eba90 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/ScenarioLibrary/IncludedPage/content.txt @@ -0,0 +1,2 @@ + +| scenario | scenario in included page | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/ScenarioLibrary/IncludedPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/ScenarioLibrary/IncludedPage/properties.xml new file mode 100644 index 0000000..82a6132 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/ScenarioLibrary/IncludedPage/properties.xml @@ -0,0 +1,13 @@ + + + true + true + + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/ScenarioLibrary/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/ScenarioLibrary/content.txt new file mode 100644 index 0000000..420b3a5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/ScenarioLibrary/content.txt @@ -0,0 +1,3 @@ +The Scenario Library + +!include >IncludedPage \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/ScenarioLibrary/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/ScenarioLibrary/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/ScenarioLibrary/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/content.txt new file mode 100644 index 0000000..fe788c6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/content.txt @@ -0,0 +1,4 @@ +This should be enough to see if the page was included in the scenario library: + +| script | +| scenario in included page | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/properties.xml new file mode 100644 index 0000000..3e87512 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeIncludedPages/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeVariables/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeVariables/content.txt new file mode 100644 index 0000000..3340fdd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeVariables/content.txt @@ -0,0 +1,25 @@ +!|script| +| create page | SuitePage | with content | !-!define TEST_SYSTEM (slim) +!define VARIABLE (some value)-! ${SUT_PATH} | +| make | SuitePage | a suite page | +| create page | SuitePage.ScenarioLibrary | with content | !-Scenario Library: "${VARIABLE}"-! | +| create page | SuitePage.TestPage | with content | !-Test Page: "${VARIABLE}"-! | +| make | SuitePage.TestPage | a test page | + +You would expect the variable to be substituted when the test page is executed: + +!| script | +| check | request page | SuitePage.TestPage?test | 200 | +| show | content | +| ensure | content contains | Scenario Library: "some value" | +| ensure | content contains | Test Page: "some value" | + + +Now, it we execute from Suite level, the variable should be substituted too: + + +!| script | +| check | request page | SuitePage?suite | 200 | +| show | content | +| ensure | content contains | Scenario Library: "some value" | +| ensure | content contains | Test Page: "some value" | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeVariables/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeVariables/properties.xml new file mode 100644 index 0000000..322b8dc --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenarioLibraryShouldIncludeVariables/properties.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenariosOnlyInSlimTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenariosOnlyInSlimTests/content.txt new file mode 100644 index 0000000..27c9583 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenariosOnlyInSlimTests/content.txt @@ -0,0 +1,7 @@ +![ script +given page ScenarioLibrary with content "brother content" +given test page TestPage +it should not contain "brother content" +]! + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenariosOnlyInSlimTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenariosOnlyInSlimTests/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ScenariosOnlyInSlimTests/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ShouldBeAbleToDealWithPlaceholderScenarios/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ShouldBeAbleToDealWithPlaceholderScenarios/content.txt new file mode 100644 index 0000000..ce4afde --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ShouldBeAbleToDealWithPlaceholderScenarios/content.txt @@ -0,0 +1,10 @@ +!|scenario|f| + +!|scenario|g|a| + +|script| +|f| +|g|1| +|pass| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ShouldBeAbleToDealWithPlaceholderScenarios/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ShouldBeAbleToDealWithPlaceholderScenarios/properties.xml new file mode 100644 index 0000000..e0c06e6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/ShouldBeAbleToDealWithPlaceholderScenarios/properties.xml @@ -0,0 +1,14 @@ + + + true + true + Should work for scenarios that have no content + true + true + true + true + + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/content.txt new file mode 100644 index 0000000..990fb6f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/content.txt @@ -0,0 +1 @@ +!contents -R2 -g -p -f -h \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/properties.xml new file mode 100644 index 0000000..6e9e1e6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioLibraryTestSuite/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/ScenarioWithOutputParametersInDecisionTables/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/ScenarioWithOutputParametersInDecisionTables/content.txt new file mode 100644 index 0000000..81d986e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/ScenarioWithOutputParametersInDecisionTables/content.txt @@ -0,0 +1,43 @@ +Output parameters in scenarios are flagged with a question mark in the header row, like in decision tables. +For each output parameter a symbol with the same name must be assigned a value in the scenario. + +See below a sample of a division scenario with output parameter "my result" + +|scenario |my division|numerator||denominator||my result?| +|setNumerator |@numerator | +|setDenominator|@denominator | +|$myResult= |quotient | + + +Get the Division implementation from the eg package +|Library | +|eg.Division| + + + +|my division | +|numerator|denominator|my result?| +|10 |2 |$x= | +|$x |1 |5.0 | + + +!3 A result calculated in one row and assigned to a symbol can be used in the next row +and the order of the columns doesn't matters + +|my division | +|my result?|numerator|denominator| +|$x= |1000 |2 | +|$x= |$x |2 | +|$x= |$x |2 | +|$x= |$x |2 | +|$x= |$x |2 | +|$x= |$x |2 | +|7.8125 |$x |2 | + +!3 A result can be used in multiple columns in the decion table to do different checks +|my division | +|numerator|denominator|my result?|my result?| +|10 |2 |5.0 |< 7.0 | +|12.6 |3 |4.2 |> 3.0 | + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/ScenarioWithOutputParametersInDecisionTables/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/ScenarioWithOutputParametersInDecisionTables/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/ScenarioWithOutputParametersInDecisionTables/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/ScenarioWithOutputParametersInScripts/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/ScenarioWithOutputParametersInScripts/content.txt new file mode 100644 index 0000000..6dc6f16 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/ScenarioWithOutputParametersInScripts/content.txt @@ -0,0 +1,47 @@ +!1 Scripts can call scenarios with output parameters + +Output parameters in scenarios are flagged with a question mark in the header row, like in decision tables. +For each output parameter a symbol with the same name must be assigned a value in the scenario. + +In the calling script you can than access the output parameter. +A scenario can have also more than one output parameter + +See below a sample of a division scenario with output parameter "quotient" + +|scenario | Mydivision |numerator| | denominator| | quotient?| +|setNumerator| @numerator| +|setDenominator| @denominator| +|$quotient= | quotient| + + +Get the Division implementation from the eg package +|Library| +|eg.Division| + +The recommended syntax to call the scnario from a script is as below + +|script| +|Mydivision; |35| 5 | +|check |echo| $quotient| 7.0| + +|script| +| Mydivision |40| | 4| | +|check |echo| $quotient| 10.0| + +The below is not recommended and might not work in the future +|script| +| Mydivision |40| | 10| | _| +|check |echo| $quotient| 4.0| + +|script| +|Mydivision; |35 |5| _ | +|check |echo| $quotient| 7.0| + + +The following syntax is currently not working +!|script| +|# Mydivision 35 5 | +|# check |echo| $quotient| 7.0| + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/ScenarioWithOutputParametersInScripts/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/ScenarioWithOutputParametersInScripts/properties.xml new file mode 100644 index 0000000..1c808ac --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/ScenarioWithOutputParametersInScripts/properties.xml @@ -0,0 +1,13 @@ + + + true + true + six42 + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/UsingConstructorArgumentsFromDecisionTablesInScenarios/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/UsingConstructorArgumentsFromDecisionTablesInScenarios/content.txt new file mode 100644 index 0000000..84095ed --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/UsingConstructorArgumentsFromDecisionTablesInScenarios/content.txt @@ -0,0 +1,64 @@ +If a decision table is implemented with a class you can specify constructor arguments. +See .FitNesse.UserGuide.WritingAcceptanceTests.SliM.ConstructorArguments for details. + +If a decision table is implemented with a scenario you can specify constructor arguments as well they have the following meaning: + +|scenario | Division _ _ _|numerator, denominator, quotient?| +|setNumerator| @numerator| +|setDenominator| @denominator| +|$quotient= | quotient| + +|library| +|eg.Division| + +!3 Calling a Scenario with Constructor Parameters + +The input variable "numerator" is given on the table construction line and must not be repeated in each row. +This can make the decison tables more readable. + +| Division | having |numerator| 9| +| denominator | quotient? | +| 3 | 3.0 | +| 2 | 4.5 | + +The Syntax is - Scenario Name - [given|having] - 1. Variable Name - 1. Variable Value - 2. Variable Name - 2. Variable Value - .... + +!5 To ensure backward compatibility constructor parameters are first checked if they are part of a scenario name +If a senario is found it will be used and no constructor values are passed. +Only if no such scenario is found the constructor parameters can be used. + +Example: + +Again a scenario with the same signature as above +|scenario | Division _ _ _|numerator, denominator, quotient?| +|check| echo | @numerator|7| + +| Division | having |numerator| 7| +| denominator | +| 3 | + +Now a higher priority scenario name +This new scenario has a name which matches the constructor parameter name "numerator". +Calling again the same decision table will use this scenario. +But numerator will not have a value. +|scenario | Division Numerator _ _ _| numerator, denominator, quotient?| +|check| echo | @numerator|@numerator| +|check not |echo| @numerator|12| + + +| Division | having |numerator| 12| +| denominator | +| 3 | + +!3 Scenario without output parameters can be used as well with constructor parameters +In this case the full line will be collered with the scenario test result. In scenarios with output parameters only the output column cells are colored. +|scenario | myDivision _ _ _|numerator, denominator, quotient| +|setNumerator| @numerator| +|setDenominator| @denominator| +|check | quotient| @quotient | + +| myDivision | having |numerator| 12| +| denominator |quotient| +| 3 | 4.0| +|6|2.0| +|4|3.0| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/UsingConstructorArgumentsFromDecisionTablesInScenarios/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/UsingConstructorArgumentsFromDecisionTablesInScenarios/properties.xml new file mode 100644 index 0000000..1c808ac --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/UsingConstructorArgumentsFromDecisionTablesInScenarios/properties.xml @@ -0,0 +1,13 @@ + + + true + true + six42 + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/content.txt new file mode 100644 index 0000000..d5d4a02 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/content.txt @@ -0,0 +1,2 @@ +!1 !help +!contents -R2 -g -p -f -h \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/properties.xml new file mode 100644 index 0000000..59e67fd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/ScenarioTestSuite/properties.xml @@ -0,0 +1,14 @@ + + + true + true + Test suite for Scenario Defintions + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SegregationOfRequirementsAndImplementation/CalculatorRequirements/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SegregationOfRequirementsAndImplementation/CalculatorRequirements/content.txt new file mode 100644 index 0000000..4bf69ad --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SegregationOfRequirementsAndImplementation/CalculatorRequirements/content.txt @@ -0,0 +1,9 @@ +| Division | +| numerator | denominator | quotient? | +| 10 | 2 | 5.0 | +| 12.6 | 3 | 4.2 | +| 22 | 7 | ~=3.14 | +| 9 | 3 | <5 | +| 11 | 2 | 4<_<6 | +| 100 | 4 | $R1= | +| $R1 | 5 | 5.0| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SegregationOfRequirementsAndImplementation/CalculatorRequirements/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SegregationOfRequirementsAndImplementation/CalculatorRequirements/properties.xml new file mode 100644 index 0000000..a6cb12d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SegregationOfRequirementsAndImplementation/CalculatorRequirements/properties.xml @@ -0,0 +1,13 @@ + + + true + true + A sub page with requirements for a calculator. + six42 + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SegregationOfRequirementsAndImplementation/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SegregationOfRequirementsAndImplementation/content.txt new file mode 100644 index 0000000..0b4b875 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SegregationOfRequirementsAndImplementation/content.txt @@ -0,0 +1,29 @@ +One of the key goals of FitNesse is to encourage that requirements in FitNesse are written before the coding of the implementation starts. +Having said that the defintion of the requirements must be independent of the technical solution used to implement it. +This sample page shows that the same requirement defintion can be implemented once with a java class implementing the decision table protokoll and once with a senario. + + +The requirements are defined in a decision table on a sub page. +The first implementation used is the Devision class from the eg library. +|import| +|eg| + +!include >CalculatorRequirements + + +Now we define a second technical solution using a FitNesse scenario +|scenario | Division _ _ _|numerator, denominator, quotient?| +|setNumerator| @numerator| +|setDenominator| @denominator| +|$quotient=| quotient| + + +Generate an instance of the class used by the scenario: +| Library | +| eg.Division| + + + +We retest the requirements and get the same results. + +!include >CalculatorRequirements diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SegregationOfRequirementsAndImplementation/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SegregationOfRequirementsAndImplementation/properties.xml new file mode 100644 index 0000000..1c808ac --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SegregationOfRequirementsAndImplementation/properties.xml @@ -0,0 +1,13 @@ + + + true + true + six42 + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SetUp/content.txt new file mode 100644 index 0000000..4405be9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SetUp/content.txt @@ -0,0 +1,9 @@ +!|Import| +|fitnesse.fixtures| + +!| SetUp | !-Plugins=fitnesse.testsystems.slim.CustomTableAliasPlugin +CustomComparators=glob:fitnesse.testsystems.slim.GlobComparator-! | + +|Library| +|page driver| +|echo fixture| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SetUp/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SetUp/properties.xml new file mode 100644 index 0000000..a16a90f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SetUp/properties.xml @@ -0,0 +1,11 @@ + + +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/NamingConvention/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/NamingConvention/content.txt new file mode 100644 index 0000000..1526321 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/NamingConvention/content.txt @@ -0,0 +1,31 @@ +|import | +|fitnesse.slim.test| + +!3 Slim symbols names must start with a letter, followed by letters, digits and underscores + +!|test slim | +|string|getStringArg?| +|foo |$x3_= | +|$x3_ |foo | + +!3 Referencing undefined Slim symbols names raise no error but return the symbol name + +!|test slim | +|string |getStringArg?| +|$UNDEFINED|$UNDEFINED | + +!3 Slim symbols names are case sensitive + +!|test slim | +|string|getStringArg?| +|lower |$x= | +|upper |$X= | +|$x |lower | +|$X |upper | + +!3 Slim symbols names also support UTF8 names + +!|test slim | +|string |getStringArg?| +|ØÅÆØÅÆ_ØÅÆØÅÆ|$Æ_ØÅ= | +|$Æ_ØÅ |ØÅÆØÅÆ_ØÅÆØÅÆ| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/NamingConvention/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/NamingConvention/properties.xml new file mode 100644 index 0000000..f16021c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/NamingConvention/properties.xml @@ -0,0 +1,15 @@ + + +true +true + +six42 +true +true +true +true + +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolCanHoldInstanceUsedAsParameter/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolCanHoldInstanceUsedAsParameter/content.txt new file mode 100644 index 0000000..97c55ee --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolCanHoldInstanceUsedAsParameter/content.txt @@ -0,0 +1,29 @@ +!|import | +|fitnesse.slim.test| + +You can store an object instance in a Slim symbol and then use the instance in parameters for methods or constructors. +Here createTestSlimWithString(string) is a factory method that creates a new !-TestSlim-! instance, sets the given string and returns the object. + +The boolean isSame(Object other) method returns whether the other object is the same as the current !-TestSlim-! table actor. +The !-getStringFromOther(TestSlim other)-! method returns !-other.getStringArg()-!. + +!|script |test slim | +|$TEST_SLIM_INSTANCE=|create test slim with string|Uncle | +|check |get string arg |null | +|reject |is same |$TEST_SLIM_INSTANCE | +|check |get string from other |$TEST_SLIM_INSTANCE|Uncle| +|check |return constructor arg |0 | + +!-TestSlim-! has a constructor !-TestSlim(int, TestSlim)-! + +!|script | +|start |test slim |1|$TEST_SLIM_INSTANCE| +|check |get string arg |Uncle | +|check |return constructor arg|1 | +|reject|is same |$TEST_SLIM_INSTANCE | + +An instance stored in a Slim symbol can also be used for instance chaining (ChainWithInstanceTest). + +!|script|$TEST_SLIM_INSTANCE | +|ensure |is same|$TEST_SLIM_INSTANCE| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolCanHoldInstanceUsedAsParameter/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolCanHoldInstanceUsedAsParameter/properties.xml new file mode 100644 index 0000000..b4f4eb3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolCanHoldInstanceUsedAsParameter/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolManipulation/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolManipulation/content.txt new file mode 100644 index 0000000..34545ef --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolManipulation/content.txt @@ -0,0 +1,66 @@ +!1 The below functions are used internally by Slim. They should not be used in normal test cases: +* freeSymbol +* cloneSymbol + +This page tests the above functions + +|import| +|fitnesse.slim.test| + +!|Library| +|EchoScript| +|TableResultExtractor| + +!3 Check that the clone $copy of a symbol $q is a real clone and not impacted by a modification of the $q +!|script| Test Query| 2| +|$q= | query| +|show | echo| $q| +|$copy= | cloneSymbol | $q| +|show | echo| $copy| +|start | Test Query | 3| +|$q= | query| +|show | echo| $q| +|show | echo| $copy| +|check| echo |$copy| [[[n, 1], [2n, 2]], [[n, 2], [2n, 4]]]| +|check |echo|$q|[[[n, 1], [2n, 2]], [[n, 2], [2n, 4]], [[n, 3], [2n, 6]]]| + +!3 Free the symbol +!|script| +|check| echo |$copy| [[[n, 1], [2n, 2]], [[n, 2], [2n, 4]]]| +|check |echo|$q|[[[n, 1], [2n, 2]], [[n, 2], [2n, 4]], [[n, 3], [2n, 6]]]| +|$q= | free symbol| +|check| echo |$copy| [[[n, 1], [2n, 2]], [[n, 2], [2n, 4]]]| +|check |echo|$q|null| + +!3 Get individual cell values from a query result (List>>) +!|script| +|check| echo |$copy| [[[n, 1], [2n, 2]], [[n, 2], [2n, 4]]]| +|$cell= | getValueFromQueryResultSymbol;| $copy| 0| 2n| +|check| echo |$cell| 2| +|$cell= | getValueFromQueryResultSymbol;| $copy| 1| 2n| +|check| echo |$cell| 4| +|$cell= | getValueFromQueryResultSymbol;| $copy| 1| n| +|check| echo |$cell| 2| +|$cell= | getValueFromQueryResultSymbol;| $copy| 0| n| +|check| echo |$cell| 1| + +!3 Get individual cell values from a table result (List>) +|script| +|check| echo |$copy| [[[n, 1], [2n, 2]], [[n, 2], [2n, 4]]]| +|$cell= | getValueFromTableResultSymbol;| $copy| 0| 0| +|check | echo | $cell |[n, 1]| +|$cell= | getValueFromTableResultSymbol;| $copy| 0| 1| +|check | echo | $cell |[2n, 2]| +|$cell= | getValueFromTableResultSymbol;| $copy| 1| 0| +|check | echo | $cell |[n, 2]| +|$cell= | getValueFromTableResultSymbol;| $copy| 1| 1| +|check | echo | $cell |[2n, 4]| +|check | getValueFromTableResultSymbol;| $copy| 1| 1| [2n, 4]| + + + +!3 Free the $copy, the $cell value must not be impacted +|script| +|$cell= | getValueFromTableResultSymbol;| $copy| 1| 1| +|$copy= | free symbol| +|check | echo | $cell |[2n, 4]| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolManipulation/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolManipulation/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolManipulation/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolShouldShowRawContents/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolShouldShowRawContents/content.txt new file mode 100644 index 0000000..d1f607a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolShouldShowRawContents/content.txt @@ -0,0 +1,18 @@ +Symbols should show the raw (in this case HTML) content that is used in the tests. + +| script| fitnesse.fixtures.EchoFixture | +| $Table_= | echo | !-
Test
-! | +| check | echo | $Table_ | $Table_ | +| show | echo | $Table_ | + + +!| script | +| given page | TestPage | with content | ${SUT_PATH} !- +!define TEST_SYSTEM {slim} +|script| fitnesse.fixtures.EchoFixture | +| $Table= | echo | !-
Test
-!-!!- | +| check | echo | $Table | $Table | +| show | echo | $Table | +-! | +| test results for page | TestPage | should contain | $Table<-[<table><tr><td>Test</td></tr></table>] | +| ensure | content contains | $Table->[<table><tr><td>Test</td></tr></table>] | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolShouldShowRawContents/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolShouldShowRawContents/properties.xml new file mode 100644 index 0000000..7690fd9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolShouldShowRawContents/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true + +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolsCanBeBlankOrNull/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolsCanBeBlankOrNull/content.txt new file mode 100644 index 0000000..b0e86b1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolsCanBeBlankOrNull/content.txt @@ -0,0 +1,25 @@ +The values in symbols can be blank or null. + +|Import| +|fitnesse.slim.test| + +|null fixture| +|get null? | +|$NULL= | +|null| + +|null fixture|$NULL| + +|script|test slim| +|check|echo string|$NULL|null| + + +|null fixture| +|get blank? | +|$BLANK= | + + +|null fixture|$BLANK| + +|script|test slim| +|check|echo string|$BLANK|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolsCanBeBlankOrNull/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolsCanBeBlankOrNull/properties.xml new file mode 100644 index 0000000..1b75839 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/SlimSymbolsCanBeBlankOrNull/properties.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + +1238547040373 +-5269654718806750977 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/TestCanPassSymbolsIntoConstructors/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/TestCanPassSymbolsIntoConstructors/content.txt new file mode 100644 index 0000000..ab5281d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/TestCanPassSymbolsIntoConstructors/content.txt @@ -0,0 +1,18 @@ +You should be able to pass symbols into constructor arguments of slim tables. + +|import| +|fitnesse.slim.test| + +|script|test slim| +|$X=|echo int|99| + +|script|test slim|$X| +|check|return constructor arg|99| + +|script| +|start|test slim|$X| +|check|return constructor arg|99| + +|test slim|$X| +|return constructor arg?| +|99| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/TestCanPassSymbolsIntoConstructors/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/TestCanPassSymbolsIntoConstructors/properties.xml new file mode 100644 index 0000000..0a3a525 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/TestCanPassSymbolsIntoConstructors/properties.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + +1232727199145 +1276174457848841381 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/TestSymbolsDontGetTurnedToStringsInTheOutput/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/TestSymbolsDontGetTurnedToStringsInTheOutput/content.txt new file mode 100644 index 0000000..8929fa2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/TestSymbolsDontGetTurnedToStringsInTheOutput/content.txt @@ -0,0 +1,21 @@ +|import| +|fitnesse.slim.test| + +!|script|test slim| + +!|scenario|should be bill|value| +|check|echo string|@value|bill| + +!|script| +|$x=|echo string|bill| +|should be bill|$x| + +!|script| +|$x=|echo string|bob| + +!|script| +|$x=|echo string|bill| +|should be bill|$x| + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/TestSymbolsDontGetTurnedToStringsInTheOutput/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/TestSymbolsDontGetTurnedToStringsInTheOutput/properties.xml new file mode 100644 index 0000000..7690fd9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/TestSymbolsDontGetTurnedToStringsInTheOutput/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true + +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/content.txt new file mode 100644 index 0000000..990fb6f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/content.txt @@ -0,0 +1 @@ +!contents -R2 -g -p -f -h \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/properties.xml new file mode 100644 index 0000000..3b76a96 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SlimSymbols/properties.xml @@ -0,0 +1,15 @@ + + +true +true + +six42 +true +true +true +true +true + +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/StopSuite/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/StopSuite/content.txt new file mode 100644 index 0000000..22d4151 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/StopSuite/content.txt @@ -0,0 +1,43 @@ +Raising an exception with the term "StopSuite" in it will make sure all remaining tests are skipped. + +!| script | +| given page | MySuite | with content | ${SUT_PATH} !- +!define TEST_SYSTEM {slim} +-! | +| given page | MySuite.TestPageA | with content | !- +| import | +| fitnesse.slim.test | + +| constructor throws | stop suite | + +| table in page A never to be executed | + +-! | +| given page | MySuite.TestPageB | with content | !- +| import | +| fitnesse.slim.test | + +| table in page B never to be executed | + +-! | +| given page | MySuite.TearDown | with content | !- +| import | +| fitnesse.slim.test | + +| script | echo script | +| check | echo | tear down after ${PAGE_NAME} | tear down after ${PAGE_NAME} | + +-! | +| given page | MySuite.SuiteTearDown | with content | !- +| import | +| fitnesse.slim.test | + +| script | echo script | +| check | echo | suite tear down executed | suite tear down executed | + +-! | +| test results for suite | MySuite | should contain | table in page A never to be executed Test not run | +| ensure | content contains | tear down after TestPageA | +| ensure | content contains | table in page B never to be executed Test not run | +| ensure | content contains | tear down after TestPageB Test not run | +| ensure | content contains | suite tear down executed | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/StopSuite/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/StopSuite/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/StopSuite/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/StopTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/StopTest/content.txt new file mode 100644 index 0000000..b399157 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/StopTest/content.txt @@ -0,0 +1,42 @@ +!| script | +| given page | MySuite | with content | ${SUT_PATH} !- +!define TEST_SYSTEM {slim} +-! | +| given page | MySuite.TestPageA | with content | !- +| import | +| fitnesse.slim.test | + +| constructor throws | stop test | + +| table never to be executed | + +-! | +| given page | MySuite.TestPageB | with content | !- +| import | +| fitnesse.slim.test | + +| script | echo script | +| check | echo | hello | hello | + +-! | +| given page | MySuite.TearDown | with content | !- +| import | +| fitnesse.slim.test | + +| script | echo script | +| check | echo | tear down after ${PAGE_NAME} | tear down after ${PAGE_NAME} | + +-! | +| given page | MySuite.SuiteTearDown | with content | !- +| import | +| fitnesse.slim.test | + +| script | echo script | +| check | echo | suite tear down executed | suite tear down executed | + +-! | +| test results for suite | MySuite | should contain | table never to be executed Test not run | +| ensure | content contains | tear down after TestPageA | +| ensure | content contains | echo script | +| ensure | content contains | tear down after TestPageB | +| ensure | content contains | suite tear down executed | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/StopTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/StopTest/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/StopTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SuiteSpecificationsPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SuiteSpecificationsPage/content.txt new file mode 100644 index 0000000..cb21366 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SuiteSpecificationsPage/content.txt @@ -0,0 +1,6 @@ +!|Suite| +|Page|JunkPage| +|Title|.| +|Content|| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SuiteSpecificationsPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SuiteSpecificationsPage/properties.xml new file mode 100644 index 0000000..6e9e1e6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SuiteSpecificationsPage/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SystemExitIsPrevented/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SystemExitIsPrevented/content.txt new file mode 100644 index 0000000..6f3c2c8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SystemExitIsPrevented/content.txt @@ -0,0 +1,13 @@ +!|script|SystemExitTableConfiguration | +|set system property|prevent.system.exit|to|true| + + +!|SystemExitTable | +|System exit code|exception message? | +|0 |prevented system exit with exit code 0 | +|1 |prevented system exit with exit code 1 | +|42 |prevented system exit with exit code 42| + + +!|script|SystemExitTableConfiguration | +|restore original system property|prevent.system.exit | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SystemExitIsPrevented/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SystemExitIsPrevented/properties.xml new file mode 100644 index 0000000..3e87512 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SystemExitIsPrevented/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SystemUnderTestTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SystemUnderTestTest/content.txt new file mode 100644 index 0000000..2b7c196 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SystemUnderTestTest/content.txt @@ -0,0 +1,13 @@ +!|Import| +|fitnesse.slim.test| + + +!|script|MySystemUnderTestDriver| +|foo| +|ensure|driver called| +|reject|system under test called| + +!|script|MySystemUnderTestDriver| +|bar| +|reject|driver called| +|ensure|system under test called| \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SystemUnderTestTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SystemUnderTestTest/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/SystemUnderTestTest/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolAssignmentAndReferenceOfTheSameInOneTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolAssignmentAndReferenceOfTheSameInOneTable/content.txt new file mode 100644 index 0000000..26ad260 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolAssignmentAndReferenceOfTheSameInOneTable/content.txt @@ -0,0 +1,12 @@ +|import | +|fitnesse.slim.test| + +|script | +|$X=|echo int|199| +|$Y=|echo int|44 | + +!|table: Table Table Inc First Col | +|12|$${RUNNING_PAGE_NAME}=|# Assign to a new symbol | +|$X|$Y= |# Assign to an existing symbol | +|$Y|$Z= |# Assign a freshly assigned value| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolAssignmentAndReferenceOfTheSameInOneTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolAssignmentAndReferenceOfTheSameInOneTable/properties.xml new file mode 100644 index 0000000..00b2f20 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolAssignmentAndReferenceOfTheSameInOneTable/properties.xml @@ -0,0 +1,16 @@ + + + + +This page is included in other tests pages, no need to execute directly +six42 + + + + + +symbols, tabletable + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolsInTableTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolsInTableTable/content.txt new file mode 100644 index 0000000..d90348a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolsInTableTable/content.txt @@ -0,0 +1,37 @@ +|import | +|fitnesse.slim.test| + + +!1 Symbols values and assignments can be used in Table Table fixtures + +!2 Given some symbol values +|script | +|$A=|echo int|99| +|$B=|echo int|5 | +|$C=|echo int|14| + +!2 Then in a Table Table the symbols can be used and values can be assigned to existing or new symbols. +!3 The fixture requires no code to handle symbols! + +|table: Table Table Inc First Col| +|$A |$resultA= | +|$B |$resultB= | +|$C |$C= | + +|script | +|check|echo int|$resultA|100| +|check|echo int|$resultB|6 | +|check|echo int|$C |15 | + + +!2 But you can't use assignments done in one row in subsequent rows. + +!include SymbolAssignmentAndReferenceOfTheSameInOneTable + +!2 Z is 45 and not 201 :( +!|script | +|check|echo int|$Z |45| +|check|echo int|$${RUNNING_PAGE_NAME}|13| + +This requires symbol aware code in the fixture. +See TestTableTableImplementingStatementExecutorConsumer how to do this. diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolsInTableTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolsInTableTable/properties.xml new file mode 100644 index 0000000..66c71d3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolsInTableTable/properties.xml @@ -0,0 +1,13 @@ + + + + +six42 + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolsInTableTableManagedByTheFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolsInTableTableManagedByTheFixture/content.txt new file mode 100644 index 0000000..8c54925 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolsInTableTableManagedByTheFixture/content.txt @@ -0,0 +1,45 @@ +|import | +|fitnesse.slim.test| + +!1 Symbol Handling by Fixtures + +If you need advanced symbol handling in your 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. +Think if you really need this as it makes your code more complicated. + + +!3 Load the symbol aware fixture +|import | +|fitnesse.slim.test.statementexecutorconsumer| + + +!include SymbolAssignmentAndReferenceOfTheSameInOneTable + + + +!3 Check the results Z is now 201 :) +!|script | +|check|echo int|$Z |201| +|check|echo int|$${RUNNING_PAGE_NAME}|13 | + + + +!3 The fixture handles a chain of assignments + +|script | +|$X=|echo|99| + +|table: Table Table Inc First Col| +|$X |$X= | +|$X |$X= | +|$X |$X= | +|$X |$X= | +|$X |$X= | +|$X |$Y= | + + + +|script | +|check|echo|$X|104| +|check|echo|$Y|105| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolsInTableTableManagedByTheFixture/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolsInTableTableManagedByTheFixture/properties.xml new file mode 100644 index 0000000..1e3157c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/SymbolsInTableTableManagedByTheFixture/properties.xml @@ -0,0 +1,13 @@ + + +true +true +six42 +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/TestReturnsNull/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/TestReturnsNull/content.txt new file mode 100644 index 0000000..0fb2e6d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/TestReturnsNull/content.txt @@ -0,0 +1,6 @@ +!|Table:fitnesse.slim.test.DummyTableTableReturnsNull| +|| + +-!|script| +|pass| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/TestReturnsNull/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/TestReturnsNull/properties.xml new file mode 100644 index 0000000..3e87512 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/TestReturnsNull/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/content.txt new file mode 100644 index 0000000..f0e96e5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/content.txt @@ -0,0 +1 @@ +!contents \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/properties.xml new file mode 100644 index 0000000..6e9e1e6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TableTableSuite/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestChineseWords/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestChineseWords/content.txt new file mode 100644 index 0000000..c34b784 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestChineseWords/content.txt @@ -0,0 +1,8 @@ +# This will make it fail: +# !define COMMAND_PATTERN {java -Dfile.encoding=GBK -cp %p %m} + +| import | +| fitnesse.slim.test | + +!| script: echo script | +| check | echo to stdout | 这是中文 | 这是中文 | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestChineseWords/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestChineseWords/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestChineseWords/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestComparators/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestComparators/content.txt new file mode 100644 index 0000000..f7eed77 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestComparators/content.txt @@ -0,0 +1,46 @@ +!*> Scenarios +|scenario|comparator|a|accepts|b| +|check|echo|@b|@a| + +|scenario|comparator|a|rejects|b| +|check not|echo|@b|@a| + +|script|echo fixture| + +*! +|script| +|comparator|=5|accepts|5| +|comparator|=5|rejects|6| +|| +|comparator|!=5|accepts|6| +|comparator|!=5|rejects|5| +|| +|comparator|>=5|accepts|5| +|comparator|>=5|rejects|4| +|| +|comparator|>5|accepts|6| +|comparator|>5|rejects|5| +|comparator|>5|rejects|4| +|| +|comparator|<=5|accepts|5| +|comparator|<=5|rejects|6| +|| +|comparator|<5|accepts|4| +|comparator|<5|rejects|5| +|comparator|<5|rejects|6| +|| +|comparator|~=5.0|accepts|4.95| +|comparator|~=5.0|accepts|5.05| +|comparator|~=5.0|rejects|4.94| +|comparator|~=5.0|rejects|5.06| +|| +|comparator|!~=5.0|accepts|4.94| +|comparator|!~=5.0|accepts|5.06| +|comparator|!~=5.0|rejects|4.95| +|comparator|!~=5.0|rejects|5.05| +|| +|comparator|3<=_<=5|accepts|5| +|comparator|3<=_<=5|accepts|3| +|comparator|3<=_<=5|accepts|4| +|comparator|3<_<5|accepts|4| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestComparators/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestComparators/properties.xml new file mode 100644 index 0000000..3107f84 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestComparators/properties.xml @@ -0,0 +1,15 @@ + + + true + true + 20090123160411 + true + true + true + true + true + true + true + 1232748251278 + -7243730814292245452 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestCustomComparators/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestCustomComparators/content.txt new file mode 100644 index 0000000..d8c67e8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestCustomComparators/content.txt @@ -0,0 +1,14 @@ +You can define a custom comparator in the plugins.properties file. This is now done by providing a configuration to the SetUp constructor. + +!| script | +| given page | TestPage | with content | ${SUT_PATH} !- +!define TEST_SYSTEM {slim} +| scenario | test in scenario | +| check | echo | test | glob:t*t | + +!| script | fitnesse.fixtures.EchoFixture | +| check | echo | test | glob:t*t | +| test in scenario | +-! | +| test results for page | TestPage | should contain | t*t matches test | +| ensure | content contains | 2 right, 0 wrong, 0 ignored, 0 exceptions | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestCustomComparators/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestCustomComparators/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestCustomComparators/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestCustomConverter/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestCustomConverter/content.txt new file mode 100644 index 0000000..17d4e8f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestCustomConverter/content.txt @@ -0,0 +1,27 @@ +We check whether a custom converter for lists can be used to change how lists are returned to the wiki. + +Whether a converter is applied to a method's result depends on its declared return type: + + * List (exactly, no sub-interface or class implementing it): converter is '''not applied''' (this is needed for some Slim tables, such as !-QueryTable-!). + * All return types: converter is applied, based on the actual class of the object returned, or on its declared type when !style_code[null] is returned + + +|import | +|fitnesse.slim.test| + +|script |!-TestSlimWithConverter-!| +|check |get object |[a, b, c]| +|check |get list |[a, b, c]| +|check |get array list |[a, b, c]| +|same list|[a, b, c] | +|set list converter | +|check |get object |{a, b, c}| +|check |get list |[a, b, c]| +|check |get array list |{a, b, c}| +|same list|{a, b, c} | +|same list|[a, b, c] | +|remove list converter | +|check |get object |[a, b, c]| +|check |get list |[a, b, c]| +|check |get array list |[a, b, c]| +|same list|[a, b, c] | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestCustomConverter/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestCustomConverter/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestCustomConverter/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestDetailedDiff/TestPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestDetailedDiff/TestPage/content.txt new file mode 100644 index 0000000..b10df64 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestDetailedDiff/TestPage/content.txt @@ -0,0 +1,145 @@ +!define 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 | +| <&> | | 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 | | 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 =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 ist 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 =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 | +| abc | $symbol= | | +| $symbol | abc | | +| $symbol | xyz | | +| $symbol | xbc | | +| $symbol | ayc | | +| $symbol | abz | | +| abc | $symbol | | +| xyz | $symbol | | +| xbc | $symbol | | +| ayc | $symbol | | +| abz | $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 | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestDetailedDiff/TestPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestDetailedDiff/TestPage/properties.xml new file mode 100644 index 0000000..8109798 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestDetailedDiff/TestPage/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestDetailedDiff/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestDetailedDiff/content.txt new file mode 100644 index 0000000..fa4783d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestDetailedDiff/content.txt @@ -0,0 +1,230 @@ +!define TEST_SYSTEM {slim} + +!3 Diff of failed 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. + +!4 Test wrapper for test + +!*> Tests for type string + +!| script | +|given page|TestPage|with content|${SUT_PATH} !- +!define 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 | +| <&> | | 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 | | 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 results for page|TestPage|should contain|!-abc-!| +|test results for page|TestPage|should contain|!-[abc] expected [xyz]-!| +|test results for page|TestPage|should contain|!-[abc] expected [xbc]-!| +|test results for page|TestPage|should contain|!-[abc] expected [ayc]-!| +|test results for page|TestPage|should contain|!-[abc] expected [abz]-!| +|test results for page|TestPage|should contain|!-[] expected [xyz]-!| +|test results for page|TestPage|should contain|!-[Hello World] expected [Wellcome Lord]-!| +*! + +!*> Tests for type int + +!| script | +|given page|TestPage|with content|${SUT_PATH} !- +!define TEST_SYSTEM {slim} + +!| import | +| fitnesse.slim.test | + +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 =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 results for page|TestPage|should contain|| +*! + +!*> Tests for type double + +!| script | +|given page|TestPage|with content|${SUT_PATH} !- +!define TEST_SYSTEM {slim} + +!| import | +| fitnesse.slim.test | + +Test doubles by string comparison. +In this case detailed diff ist 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 =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 results for page|TestPage|should contain|| +*! + +!*> Tests of fitnesse symbols + +!| script | +|given page|TestPage|with content|${SUT_PATH} !- +!define TEST_SYSTEM {slim} + +!| import | +| fitnesse.slim.test | +Test symbols by string comparison. + +| Detailed Diff | +| actual symbol | expected symbol? | #comment | +| abc | $symbol= | | +| $symbol | abc | | +| $symbol | xyz | | +| $symbol | xbc | | +| $symbol | ayc | | +| $symbol | abz | | +| abc | $symbol | | +| xyz | $symbol | | +| xbc | $symbol | | +| ayc | $symbol | | +| abz | $symbol | | +| | $symbol | | +-!| +|test results for page|TestPage|should contain|!-abc-!| +|test results for page|TestPage|should contain|!-[abc] expected [xyz]-!| +|test results for page|TestPage|should contain|!-[abc] expected [xbc]-!| +|test results for page|TestPage|should contain|!-[abc] expected [ayc]-!| +|test results for page|TestPage|should contain|!-[abc] expected [abz]-!| +|test results for page|TestPage|should contain|!-<span class="pass">$symbol->[abc]</span>-!| +|test results for page|TestPage|should contain|!-[xyz] expected [$symbol->[abc]]-!| +|test results for page|TestPage|should contain|!-[xbc] expected [$symbol->[abc]]-!| +|test results for page|TestPage|should contain|!-[ayc] expected [$symbol->[abc]]-!| +|test results for page|TestPage|should contain|!-[abz] expected [$symbol->[abc]]-!| +|test results for page|TestPage|should contain|!-[] expected [$symbol->[abc]]-!| +*! + +!*> Tests of custom comparator + +!| script | +|given page|TestPage|with content|${SUT_PATH} !- +!define TEST_SYSTEM {slim} + +!| import | +| fitnesse.slim.test | +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 results for page|TestPage|should contain|| +*! + +!*> Tests of scenario + +!| script | +|given page|TestPage|with content|${SUT_PATH} !- +!define TEST_SYSTEM {slim} + +!| import | +| fitnesse.slim.test | +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 | +-!| +|test results for page|TestPage|should contain|!-hello-!| +|test results for page|TestPage|should contain|!-[hello] expected [hallo]-!| +*! diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestDetailedDiff/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestDetailedDiff/properties.xml new file mode 100644 index 0000000..6ca0af3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestDetailedDiff/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestExceptionCount/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestExceptionCount/content.txt new file mode 100644 index 0000000..afef119 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestExceptionCount/content.txt @@ -0,0 +1,32 @@ +!3 The amount of exceptions counted should not exceed the number of errors displayed on the screen. + +!| script | +| given page | TestPage | with content | ${SUT_PATH} !- +!define TEST_SYSTEM {slim} +|lorem ipsum | +|foo |bar |baz?| +|dolor |sit |amet| +|consectetur|adipiscing|elit| +-! | +| test results for page | TestPage | should contain | 0 right, 0 wrong, 0 ignored, 7 exceptions | + +!3 If a fixture defnition generates a syntax error this must be counted as exception in the test summary. + +Syntax errors are generated by: +* A scenario without a name +* A decision table with less than 3 rows + +!| script | +| given page | TestPage | with content | ${SUT_PATH} !- +!define TEST_SYSTEM {slim} + +|scenario| + +|eg.Division| +|nominator| + +-! | +| test results for page | TestPage | should contain | 0 right, 0 wrong, 0 ignored, 2 exceptions | +| ensure | content contains | Bad table! Scenario tables must have a name.| +| ensure | content contains | Division: Bad table! DecisionTables should have at least| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestExceptionCount/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestExceptionCount/properties.xml new file mode 100644 index 0000000..3e87512 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestExceptionCount/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestExceptionIsDisplayed/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestExceptionIsDisplayed/content.txt new file mode 100644 index 0000000..23dbe3d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestExceptionIsDisplayed/content.txt @@ -0,0 +1,12 @@ +!| script | +| given page | TestPage | with content | ${SUT_PATH} !- +!define TEST_SYSTEM {slim} +| import | +| fitnesse.slim.test | + +| decision table execute throws | +| x? | +| 1 | +-! | +| test results for page | TestPage | should contain | __EXCEPTION__:fitnesse.slim.SlimError: EXECUTE_THROWS | +| ensure | content contains | at fitnesse.slim.test.DecisionTableExecuteThrows | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestExceptionIsDisplayed/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestExceptionIsDisplayed/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestExceptionIsDisplayed/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestHtmlContent/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestHtmlContent/content.txt new file mode 100644 index 0000000..300bc08 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestHtmlContent/content.txt @@ -0,0 +1,24 @@ +Slim tables can contain HTML content. If content qualifies as HTML, it is passed to the SUT as HTML. + +!**> scenarios +!define html {| !note > 50% (note) | +| !meta < 50% (meta) |} + +!define no_html {< 50%} + +| scenario | Content | content | is returned as | out | +| check | echo | @content | @out | +| set name | @content | + +| scenario | And the SUT sees | substring | +| ensure | name contains | @substring | +*! + +-|script| +| Content | ${html} | is returned as | ${html} | +| And the SUT sees | !note > 50% (note) | +| And the SUT sees | !meta < 50% (meta) | + +-|script| +| Content | ${no_html} | is returned as | ${no_html} | +| And the SUT sees | < 50% | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestHtmlContent/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestHtmlContent/properties.xml new file mode 100644 index 0000000..3e87512 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestHtmlContent/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestOrderedQueryWithDuplicateRows/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestOrderedQueryWithDuplicateRows/content.txt new file mode 100644 index 0000000..e94bcb4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestOrderedQueryWithDuplicateRows/content.txt @@ -0,0 +1,20 @@ +!|Ordered Query:duplicate rows|A| +|x | +|SuiteChildOne.SuiteSetUp | +|SuiteChildOne.TestOneOne | +|SuiteChildOne.TestOneTwo | +|SuiteChildOne.SuiteTearDown | +|SuiteChildOne.SuiteSetUp | +|SuiteChildOne.TestOneThree | +|SuiteChildOne.SuiteTearDown | + +!|Ordered Query:duplicate rows|B| +|x | +|SuiteChildOne.SuiteSetUp | +|SuiteChildOne.TestOneThree | +|SuiteChildOne.SuiteTearDown | +|SuiteChildOne.SuiteSetUp | +|SuiteChildOne.TestOneOne | +|SuiteChildOne.TestOneTwo | +|SuiteChildOne.SuiteTearDown | + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestOrderedQueryWithDuplicateRows/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestOrderedQueryWithDuplicateRows/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestOrderedQueryWithDuplicateRows/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestPageWithInclude/IncludedPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestPageWithInclude/IncludedPage/content.txt new file mode 100644 index 0000000..d30e2c5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestPageWithInclude/IncludedPage/content.txt @@ -0,0 +1,7 @@ +!define FOO {foobar} + +|echo fixture| +|name|name?| +|${FOO}|foobar| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestPageWithInclude/IncludedPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestPageWithInclude/IncludedPage/properties.xml new file mode 100644 index 0000000..a65a6f3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestPageWithInclude/IncludedPage/properties.xml @@ -0,0 +1,14 @@ + + + true + true + 20081209085434 + true + true + true + true + true + true + 1228834474023 + -1244951035038974341 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestPageWithInclude/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestPageWithInclude/content.txt new file mode 100644 index 0000000..417b345 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestPageWithInclude/content.txt @@ -0,0 +1 @@ +!include >IncludedPage \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestPageWithInclude/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestPageWithInclude/properties.xml new file mode 100644 index 0000000..8d5481a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestPageWithInclude/properties.xml @@ -0,0 +1,15 @@ + + + true + true + 20081209085200 + true + true + true + true + true + true + true + 1228736983781 + 6183774697863259098 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestScriptTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestScriptTable/content.txt new file mode 100644 index 0000000..21d95b0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestScriptTable/content.txt @@ -0,0 +1,6 @@ +| script | echo fixture | +| check | echo | Hello | Hello | + + +| script: echo fixture | +| check | echo | Hello | Hello | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestScriptTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestScriptTable/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestScriptTable/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestScriptTableDisplayParameterValue/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestScriptTableDisplayParameterValue/content.txt new file mode 100644 index 0000000..6e331d6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestScriptTableDisplayParameterValue/content.txt @@ -0,0 +1,13 @@ +|import| +|fitnesse.slim.test| + +|script|test slim| +|$X=|echo int|100| + +|script|test slim|$X| +|check|returnConstructorArg|100| + +|script: test slim|$X| +|check|returnConstructorArg|100| +|start|test slim|$X| +|check|returnConstructorArg|100| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestScriptTableDisplayParameterValue/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestScriptTableDisplayParameterValue/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestScriptTableDisplayParameterValue/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSequentialArgumentProcessing/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSequentialArgumentProcessing/content.txt new file mode 100644 index 0000000..a08bf03 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSequentialArgumentProcessing/content.txt @@ -0,0 +1,59 @@ +!1 Sequential Argument Processing in Script Tables +''concatenateThreeArgs(String first, String second, String third)'' returns the concatenated arguments, separated by a space +!3 Affixing a semi-colon ";" to the end of a cell's contents should invoke sequential argument processing. Mixing every-other-cell and sequential-cell processing within the same row is permitted. +!|script |fitnesse.slim.test.TestSlim| +|concatenate three args;|1 |2.0 |three | +|concatenate |a |three args; |b |c | +|concatenate three |x |args; |why |zee | + +!3 Results of the function call should be equal regardless of processing style. +!|script | +|$RESULT_WITH_EVERY_OTHER_CELL_PROCESSING=|concatenate |a |three |b |args |c | +|$RESULT_WITH_SEQUENTIAL_CELL_PROCESSING= |concatenate three args;|a |b |c | +|$RESULT_WITH_MIXED_PROCESSING= |concatenate |a |three args; |b |c | +|check |echo string |$RESULT_WITH_SEQUENTIAL_CELL_PROCESSING|$RESULT_WITH_EVERY_OTHER_CELL_PROCESSING| +|check |echo string |$RESULT_WITH_MIXED_PROCESSING |$RESULT_WITH_EVERY_OTHER_CELL_PROCESSING| + +!3 Script Table Keywords +!|script | +|check |concatenate three args;|1|2.0|three|1 2.0 three | +|check not|concatenate three args;|a|b |c |something else| +|show |concatenate three args;|a|b |c | + +!3 Sequential argument processing can be used in scenario tables +!|scenario|concatenate |input1 |and |input2|and|input3| +|$RESULT= |concatenate three args;|@input1|@input2|@input3 | + +!|script | +|concatenate|a |and |b|and|c| +|check |echo string|$RESULT|a b c | + +!|concatenate|input1|and|input2|and|input3| +|input1 |input2|input3 | +|x |y |z | + +!|script | +|check|echo string|$RESULT|x y z| + +!3 Script name's character case should be identical to scenario name's character case. +!|scenario|conCatentate _ _ _ |input1,input2,input3 | +|$RESULT= |concatenate three args;|@input1|@input2|@input3| + +!|script | +|conCatentate a b c | +|check |echo string|$RESULT|a b c| +|conCatentate;|a |b |c | +|check |echo string|$RESULT|a b c| + +!|scenario|con |input1 |cAt |input2|enate|input3| +|$RESULT= |concatenate three args;|@input1|@input2|@input3 | + +!|ConCAtEnate;|input1 |input2 |input3| +|input1 |input2 |input3 | +|x |y |z | +|check |echo string|$RESULT|x y z | + +!|Con |input1 |CAt |input2|Enate|input3| +|input1|input2 |input3 | +|x |y |z | +|check |echo string|$RESULT|x y z | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSequentialArgumentProcessing/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSequentialArgumentProcessing/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSequentialArgumentProcessing/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSubsetQuery/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSubsetQuery/content.txt new file mode 100644 index 0000000..e0b9aeb --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSubsetQuery/content.txt @@ -0,0 +1,25 @@ +The empty set is always a subset. + +!|Subset Query:duplicate rows|A| +|x | + +Complete set is a subset (we do not mean proper subset). + +!|Subset Query:duplicate rows|A| +|x | +|SuiteChildOne.SuiteSetUp | +|SuiteChildOne.TestOneOne | +|SuiteChildOne.TestOneTwo | +|SuiteChildOne.SuiteTearDown | +|SuiteChildOne.SuiteSetUp | +|SuiteChildOne.TestOneThree | +|SuiteChildOne.SuiteTearDown | + +Only some of the rows (in different order) form a subset. + +!|Subset Query:duplicate rows|A| +|x | +|SuiteChildOne.TestOneTwo | +|SuiteChildOne.SuiteTearDown | +|SuiteChildOne.SuiteSetUp | +|SuiteChildOne.TestOneThree | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSubsetQuery/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSubsetQuery/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSubsetQuery/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/A_TimeoutAsSlimHeaderNotReceived/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/A_TimeoutAsSlimHeaderNotReceived/content.txt new file mode 100644 index 0000000..a1d32bf --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/A_TimeoutAsSlimHeaderNotReceived/content.txt @@ -0,0 +1,23 @@ +!2 Once a connection to the socket is established the Slim Server must send a header message. +Use the property slim.timeout to define how long the test system should wait for the slim client. The default is 10 seconds. + +We start the test system Slim but connect to the fitnesse wiki server instead of starting a valid slim server +As a result we can connect to a socket but never get a Slim Header message. +After slim.timeout seconds we should abort and stop the test. + + +!| script | +|create page|TestPage|with content|!- + +!define TEST_SYSTEM {SLIM} +!define slim.timeout {1} +!define slim.pool.size (1) +!define SLIM_PORT (-!${FITNESSE_PORT}!-) +!define SLIM_FLAGS (-v) +-! | +|check |request page |TestPage?test |200 | +|ensure |content contains|Timeout while reading slim header from client.| +|show collapsed|content | +|check |request page |TestPage?executionLog |200 | +|ensure |content contains|Address already in use | +|show collapsed|content | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/A_TimeoutAsSlimHeaderNotReceived/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/A_TimeoutAsSlimHeaderNotReceived/properties.xml new file mode 100644 index 0000000..452d793 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/A_TimeoutAsSlimHeaderNotReceived/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + +noJunit + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/B_TimeoutAsSlimServerDiesBeforeConnecting/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/B_TimeoutAsSlimServerDiesBeforeConnecting/content.txt new file mode 100644 index 0000000..92e1900 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/B_TimeoutAsSlimServerDiesBeforeConnecting/content.txt @@ -0,0 +1,19 @@ +!2 Identify if the Slim Server process dies during startup + +If a slim server process dies before a connection has been established this should be identified quickly and the test aborted. +We use a test runner class which doesn't exists. This ensures the slim server dies. + + +!| script | +| create page | TestPage | with content | !- +!define TEST_SYSTEM {SLIM} +!define slim.timeout {2} +!define SLIM_PORT {0} +!define TEST_RUNNER {something.that.does.not.exists} + +-! | +| check | request page | TestPage?test | 200 | +| ensure |content contains |Error SLiM server died before a connection could be established.| +| show collapsed | content | +| check | request page | TestPage?executionLog| 200 | +| show collapsed | content | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/B_TimeoutAsSlimServerDiesBeforeConnecting/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/B_TimeoutAsSlimServerDiesBeforeConnecting/properties.xml new file mode 100644 index 0000000..1e3157c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/B_TimeoutAsSlimServerDiesBeforeConnecting/properties.xml @@ -0,0 +1,13 @@ + + +true +true +six42 +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/C_TimeoutAsNoServerAtGivenSocket/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/C_TimeoutAsNoServerAtGivenSocket/content.txt new file mode 100644 index 0000000..e03ad1c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/C_TimeoutAsNoServerAtGivenSocket/content.txt @@ -0,0 +1,21 @@ +!2 Trying to connect to a socket where no slim server is running should fail quickly. + +To test this we run in debug mode and request to start the slim server ourselfs. But we never start one :) + +Use the property slim.timeout to define how long the test system should wait for the slim client. The default is 10 seconds. +In this test we set it to 1 second. + +!| script | +| create page | TestPage | with content | !- +!define TEST_SYSTEM {SLIM} +!define slim.timeout {1} +!define SLIM_PORT {8099} +!define MANUALLY_START_TEST_RUNNER_ON_DEBUG (true) + +-! | +| check | request page | TestPage?test&remote_debug | 200 | +|ensure |content contains |Error connecting to SLiM server on localhost:| +| show collapsed| content | +| check | request page | TestPage?executionLog| 200 | +|ensure | content matches | Time elapsed:.* seconds | +| show collapsed| content | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/C_TimeoutAsNoServerAtGivenSocket/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/C_TimeoutAsNoServerAtGivenSocket/properties.xml new file mode 100644 index 0000000..1e3157c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/C_TimeoutAsNoServerAtGivenSocket/properties.xml @@ -0,0 +1,13 @@ + + +true +true +six42 +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/content.txt new file mode 100644 index 0000000..e99203f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/content.txt @@ -0,0 +1,7 @@ +!define TEST_SYSTEM (SLIM) + +!1 The following errors can happen during the startup of Slim Server + +Use the property slim.timeout to define how long the test system should wait for the slim client. The default is 10 seconds. + +!contents -R2 -g -p -f -h \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/properties.xml new file mode 100644 index 0000000..9a391ff --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/ErrorSituationsDuringSlimServerStartup/properties.xml @@ -0,0 +1,13 @@ + + + + +six42 + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/NotWorking_SettingSlimTimeout/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/NotWorking_SettingSlimTimeout/content.txt new file mode 100644 index 0000000..a3094c4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/NotWorking_SettingSlimTimeout/content.txt @@ -0,0 +1,12 @@ +!define TEST_SYSTEM (SLIM) + +Setting slim.timeout doesn't works :( +!define slim.timeout (1) + + +This table should fails as the duration is above the slim.timeout but is does not :( +!| fitnesse.slim.test.Sleep| +|Timer | do Sleep ?| +|12000| WakeUp 12000| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/NotWorking_SettingSlimTimeout/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/NotWorking_SettingSlimTimeout/properties.xml new file mode 100644 index 0000000..1e3157c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/NotWorking_SettingSlimTimeout/properties.xml @@ -0,0 +1,13 @@ + + +true +true +six42 +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/PartiallyWorking_SettingSlimFlags/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/PartiallyWorking_SettingSlimFlags/content.txt new file mode 100644 index 0000000..809a45d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/PartiallyWorking_SettingSlimFlags/content.txt @@ -0,0 +1,40 @@ +!define TEST_SYSTEM (SLIM) + +!1 How to enforce that a test command takes only a limited amount of time during testing + +The slim client needs an extra parrameter -s timeoutLimit but this is not passed by default + + +Defining the parameter via slim_flags will do the job. The timeout is now 1 second. +!define SLIM_FLAGS (-s 1) + +To test that slim_flags are parsed correctly we also add the verbose option (-v) and have multiple spaces between the parameters. The extra spaces must be ignored. +!define SLIM_FLAGS ( -v -s 1 ) + + +This table passes as the duration is less than the timeout +!| fitnesse.slim.test.Sleep| +|Timer | do Sleep ?| +|100| WakeUp 100| + +This table passes as the duration of each command is less than the timeout also the duration of the full table is longer +!| fitnesse.slim.test.Sleep| +|Timer | do Sleep ?| +|100| WakeUp 100| +|200| WakeUp 200| +|300| WakeUp 300| +|400| WakeUp 400| +|500| WakeUp 500| +|600| WakeUp 600| + +This table fails as the duration is above the timeout +Note that the endTable command also creates an exception which is wrong +!| fitnesse.slim.test.Sleep| +|Timer | do Sleep ?| +|20000| WakeUp 20000| + +Once a Timeout occured every test afterwards fails which is wrong +!| fitnesse.slim.test.Sleep| +|Timer | do Sleep ?| +|100| WakeUp 100| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/PartiallyWorking_SettingSlimFlags/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/PartiallyWorking_SettingSlimFlags/properties.xml new file mode 100644 index 0000000..1e3157c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/PartiallyWorking_SettingSlimFlags/properties.xml @@ -0,0 +1,13 @@ + + +true +true +six42 +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/content.txt new file mode 100644 index 0000000..49770fe --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/content.txt @@ -0,0 +1,10 @@ +!define TEST_SYSTEM (SLIM) + +!1 How to enforce that a test command takes only a limited amount of time during testing + +The slim client needs an extra parrameter -s timeoutLimit but this is not passed by default + +Please run each page seperately. If you run this as a suite the Slim Server is started only once taking the slim_flags from the first page created. +The results from the second page are then misleading. + +!contents -R2 -g -p -f -h diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/properties.xml new file mode 100644 index 0000000..310f39b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/HowtoEnforceA_TimelimitPerTestCommand/properties.xml @@ -0,0 +1,14 @@ + + + + +six42 + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/SlimConnectionTimeout/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/SlimConnectionTimeout/content.txt new file mode 100644 index 0000000..4842af1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/SlimConnectionTimeout/content.txt @@ -0,0 +1,16 @@ +For this test to perform we reduce the timeout to 1 second. If the server is not responding in time, we should raise an error. + +#!define slim.timeout {2} +#!define SLIM_PORT {8099} +#!define TEST_RUNNER {fitnesse.slim.test.Sleep} +#|fitnesse.fixtures.Sleep|20000| + +!| script | +|given page|TestPage|with content|${SUT_PATH} !- +!define TEST_SYSTEM {slim} +!define SLIM_PORT {8099} +!define slim.timeout {1} +!define TEST_RUNNER {fitnesse.slim.test.Sleep} +|fitnesse.fixtures.Sleep|20000| +-! | +|test results for page|TestPage|should contain|Unable to start test system 'slim': fitnesse.slim.SlimError: Error connecting to SLiM server on localhost:| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/SlimConnectionTimeout/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/SlimConnectionTimeout/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/SlimConnectionTimeout/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/TimeoutInSlimTestSystem/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/TimeoutInSlimTestSystem/content.txt new file mode 100644 index 0000000..c7b8d0e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/TimeoutInSlimTestSystem/content.txt @@ -0,0 +1,13 @@ +For this test to perform we reduce the timeout to 2 seconds. If the server is not responding in time, we should raise an error. + +#!define slim.flags {-s 12} +#|fitnesse.fixtures.Sleep|20000| + +!| script | +|given page|TestPage|with content|${SUT_PATH} !- +!define TEST_SYSTEM {slim} +!define slim.flags {-s 2} +|fitnesse.fixtures.Sleep|20000| +-! | +|test results for page|TestPage|should contain|The instruction timed out after 2 seconds| +|test results for page in debug mode|TestPage|should contain|The instruction timed out after 2 seconds| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/TimeoutInSlimTestSystem/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/TimeoutInSlimTestSystem/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/TimeoutInSlimTestSystem/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/content.txt new file mode 100644 index 0000000..d5d4a02 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/content.txt @@ -0,0 +1,2 @@ +!1 !help +!contents -R2 -g -p -f -h \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/properties.xml new file mode 100644 index 0000000..ac33f31 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestSystemSlimSuite/properties.xml @@ -0,0 +1,15 @@ + + +true +true +Test for testing the Slim Test System +six42 +true +true +true +true +true +SLIM +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestTryingParameterizationIsntTooGreedy/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestTryingParameterizationIsntTooGreedy/content.txt new file mode 100644 index 0000000..d666fa1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestTryingParameterizationIsntTooGreedy/content.txt @@ -0,0 +1,33 @@ +|import | +|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. + + +!2 Scenario with no arguments and a shared root +!|scenario |login | +|connect to server| + +!2 +!|scenario |connect as|username |with|password| +|login with username|@username |and Password|@password | + + +!2 Scenario With one argument and a shared root. +!|scenario |login with|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. +!|scenario |connect as|username |with|password| +|login with username|@username |and Password|@password | + + + + +!|script | +|start |Login Dialog Driver|bob |xyzz| +|connect as|bob |with|xyzz| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestTryingParameterizationIsntTooGreedy/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestTryingParameterizationIsntTooGreedy/properties.xml new file mode 100644 index 0000000..4e908ad --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestTryingParameterizationIsntTooGreedy/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestTwoIdenticalTablesOnPageDontConflict/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestTwoIdenticalTablesOnPageDontConflict/content.txt new file mode 100644 index 0000000..c6c82df --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestTwoIdenticalTablesOnPageDontConflict/content.txt @@ -0,0 +1,12 @@ +!note Lighthouse #126 +''There was a bug that caused tests to silently fail, and suites to abort without notification if there were two tables on a page that were identical in every way. This was discovered when a Scenario Library was included twice.'' + +|import| +|me| + +|import| +|me| + +-!|script| +|pass| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestTwoIdenticalTablesOnPageDontConflict/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestTwoIdenticalTablesOnPageDontConflict/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/TestTwoIdenticalTablesOnPageDontConflict/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/TestWithVariable/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/TestWithVariable/content.txt new file mode 100644 index 0000000..6fc47d9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/TestWithVariable/content.txt @@ -0,0 +1,22 @@ +!4 To test This page three variables must be defined on the parent page: "numerator", "denominator" and "quotient" +#!define numerator {10} +#!define denominator {2} +#!define quotient2 {5} + +!4 Define variables on this sub page. They can be used on the main page +!define result {77.0} +!define quotient4 {${= ${numerator} / ${denominator} =}.0} + +print quotient = ${quotient} +print quotient2 = ${quotient2} +print quotient4 = ${quotient4} + +|eg.Division| +|# Test Description | numerator | denominator | quotient? | +| Expected result is calculated with expression | ${numerator} | ${denominator} | ${= %3.0f : ${numerator} / ${denominator} =}.0 | +| Expected result is in variable | ${numerator} | ${denominator} | ${quotient} | +| Store result in a symbol | ${numerator} | ${denominator} | $result= | +| Use symbol |$result | 1| ${quotient}| + +printing a variable is possible: result = ${result} +printing a symbol is not possible: result = $result diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/TestWithVariable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/TestWithVariable/properties.xml new file mode 100644 index 0000000..1a9233a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/TestWithVariable/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/VariablesRedefinedMultipleTimesOnSamePageAndUsedInSubpage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/VariablesRedefinedMultipleTimesOnSamePageAndUsedInSubpage/content.txt new file mode 100644 index 0000000..17b5ed7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/VariablesRedefinedMultipleTimesOnSamePageAndUsedInSubpage/content.txt @@ -0,0 +1,9 @@ +!3 Redefine denominator +!define denominator {2} + +!include TestWithVariable + +!3 Redefine denominator +!define denominator {2.5} + +!include TestWithVariable diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/VariablesRedefinedMultipleTimesOnSamePageAndUsedInSubpage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/VariablesRedefinedMultipleTimesOnSamePageAndUsedInSubpage/properties.xml new file mode 100644 index 0000000..1a9233a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/VariablesRedefinedMultipleTimesOnSamePageAndUsedInSubpage/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/content.txt new file mode 100644 index 0000000..dde8a46 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/content.txt @@ -0,0 +1,43 @@ +!2 Variables are always passed "by reference" and not "by value" +if a variable is changed on a sub page and then referenced again on the parent page the variable has the value assigned on the sub page and not the value from the parent page. + +This behaviour is shown in the below examples: + +!3 Define initial values for numerator, denominator and quotient +!define numerator {10} +!define denominator {1} +!define quotient {${= %3.0f : ${numerator} / ${denominator} =}.0} +!define quotient2 quotient + +!include >VariablesRedefinedMultipleTimesOnSamePageAndUsedInSubpage + +!3 Check values from variables and symbols +|script| +| #| $ {numerator} has the value as defined on this page| +|check | echo | ${numerator} | 10 | +| #| $ {denominator} has the value as defined on the sub page| +|check | echo | ${denominator} | 2.5 | +| #| $ {quotient4} has the value from expression on the sub sub page| +|check | echo | ${quotient4} | 4.0 | +| #| $ {result} has the value as defined on the sub sub page| +|check | echo | ${result} | 77.0 | +|#| $ result Symbol from sub sub page can be accessed| +|check | echo | $result | 4.0| + +!3 Redefine numerator +!define numerator {20} + +!include >VariablesRedefinedMultipleTimesOnSamePageAndUsedInSubpage + +!3 Check values from variables and symbols again +|script| +| #| $ {numerator} has the value as defined on this page| +|check | echo | ${numerator} | 20 | +| #| $ {denominator} has the value as defined on the sub page| +|check | echo | ${denominator} | 2.5 | +| #| $ {quotient4} has the value from expression on the sub sub page| +|check | echo | ${quotient4} | 8.0 | +| #| $ {result} has the value as defined on the sub sub page| +|check | echo | ${result} | 77.0 | +|#| $ result Symbol from sub sub page can be accessed| +|check | echo | $result | 8.0| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/properties.xml new file mode 100644 index 0000000..be7b91a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/VariablesUsedInSubSubpage/properties.xml @@ -0,0 +1,13 @@ + + + true + true + sa + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/content.txt new file mode 100644 index 0000000..aabe3d0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/content.txt @@ -0,0 +1,4 @@ +!define TEST_SYSTEM {slim} + +!contents -R2 -g -p -f -h + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/properties.xml new file mode 100644 index 0000000..1da939d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSlimTests/properties.xml @@ -0,0 +1,15 @@ + + + + + + + + + +slim, tag2 + + +1232466948299 +-7901610663668633806 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateAbsoluteSymbolicLink/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateAbsoluteSymbolicLink/content.txt new file mode 100644 index 0000000..0c1ff96 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateAbsoluteSymbolicLink/content.txt @@ -0,0 +1,14 @@ +Create an absolute symbolic link from a sub-page: + +First we need to create some pages to play with. +!|Page creator.| +|Page name. |PageContents. |valid?| +|LinkingPage |LINKING PAGE |true | +|LinkingPage.LinkingChild|LINKING CHILD |true | +|LinkedPage |LINKED PAGE |true | +|LinkedPage.LinkedChild |LINKED CHILD |true | + +Now we create a symbolic link named !-SymLink-!. This links !-LinkedPage.LinkedChild-! as a child of !-LinkingPage.LinkingChild-!. +!|Response Requester.| +|uri |status?| +|LinkingPage.LinkingChild?responder=symlink&linkName=SymLink&linkPath=.LinkedPage.LinkedChild|303| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateAbsoluteSymbolicLink/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateAbsoluteSymbolicLink/properties.xml new file mode 100644 index 0000000..321f386 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateAbsoluteSymbolicLink/properties.xml @@ -0,0 +1,10 @@ + + + + + 20071209231745 + + + 1197255276583 + -2802271540647210678 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateBackwardSymbolicLink/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateBackwardSymbolicLink/content.txt new file mode 100644 index 0000000..236e215 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateBackwardSymbolicLink/content.txt @@ -0,0 +1,13 @@ +Create an absolute symbolic link from a sub-page: + +First we need to create some pages to play with. +!|Page creator.| +|Page name. |PageContents. |valid?| +|LinkingPage |LINKING PAGE |true | +|LinkingPage.LinkingChild|LINKING 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-!. +!|Response Requester.| +|uri |status?| +|LinkingPage.LinkingChild?responder=symlink&linkName=SymLink&linkPath= + + + + 20071209231818 + + + 1197255523311 + -2905294764201163185 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateNestedBackSymbolicLink/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateNestedBackSymbolicLink/content.txt new file mode 100644 index 0000000..0666d27 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateNestedBackSymbolicLink/content.txt @@ -0,0 +1,15 @@ +Create an nested backward symbolic link from a sub-page: + +First we need to create some pages to play with. +!|Page creator.| +|Page name. |PageContents. |valid?| +|LinkingPage |LINKING PAGE |true | +|LinkingPage.LinkingChild |LINKING CHILD |true | +|LinkingPage.LinkingChild.LinkingGrandChild |LINKING GRAND CHILD |true | +|LinkingPage.LinkingChild.LinkingGrandChild.LinkingGreatGrandChild|LINKING GREAT GRAND 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-!. +!|Response Requester.| +|uri |status?| +|LinkingPage.LinkingChild.LinkingGrandChild.LinkingGreatGrandChild?responder=symlink&linkName=SymLink&linkPath= + + + + 20071212153458 + + + 1197318232254 + -6614712250920689672 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateRelativeSymbolicLink/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateRelativeSymbolicLink/content.txt new file mode 100644 index 0000000..78d3ef3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateRelativeSymbolicLink/content.txt @@ -0,0 +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: + +!-http://host/PathToPage?responder=symlink&linkName=&linkPath=-! + +First we need to create some pages to play with. +!|Page creator.| +|Page name.|valid?| +|LinkingPage|true| +|LinkedPage|true| + +Now we create a symbolic link named !-SymLink-!. This links !-LinkedPage-! as a child of !-LinkingPage-!. +!|Response Requester.| +|uri |status?| +|LinkingPage?responder=symlink&linkName=SymLink&linkPath=LinkedPage|303| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateRelativeSymbolicLink/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateRelativeSymbolicLink/properties.xml new file mode 100644 index 0000000..cccf3d6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateRelativeSymbolicLink/properties.xml @@ -0,0 +1,10 @@ + + + + + 20071209231838 + + + 1197229524174 + 5360217332855886973 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateSubPageSymbolicLink/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateSubPageSymbolicLink/content.txt new file mode 100644 index 0000000..1dff5c4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateSubPageSymbolicLink/content.txt @@ -0,0 +1,12 @@ +Create a symbolic link to a sub-page: + +First we need to create some pages to play with. +!|Page creator.| +|Page name. |PageContents. |valid?| +|LinkingPage |LINKING PAGE |true | +|LinkingPage.LinkedChild |LINKED CHILD |true | + +Now we create a symbolic link named !-SymLink-!. This links !-LinkingPage.LinkedChild-! as a child of !-LinkingPage-!. +!|Response Requester.| +|uri |status?| +|LinkingPage?responder=symlink&linkName=SymLink&linkPath=>LinkedChild|303| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateSubPageSymbolicLink/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateSubPageSymbolicLink/properties.xml new file mode 100644 index 0000000..54faed6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/CreateSubPageSymbolicLink/properties.xml @@ -0,0 +1,14 @@ + + + true + true + 20071209210332 + true + true + true + true + true + true + 1197252212825 + 6202123951021509855 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingAbsoluteSymbolicLink/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingAbsoluteSymbolicLink/content.txt new file mode 100644 index 0000000..288c504 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingAbsoluteSymbolicLink/content.txt @@ -0,0 +1,25 @@ +!include CreateAbsoluteSymbolicLink + +Creating a symlink will redirect back to the properties page. +!|Response Examiner.| +|type |pattern |matches? |contents?| +|contents|Location: /LinkingPage.LinkingChild\?properties|true|| + +Let's have a look at the properties view. +!|Response Requester.| +|uri |status?| +|LinkingPage.LinkingChild?properties|200| + +!********************> RESPONSE DATA +!|Response Examiner. | +|type |wrappedHtml?| +|contents| | + +****! + +The newly created symbolic link will be listed along with a link to the linked page. +!|Response Examiner.| +|type |pattern|matches?| +|contents|SymLink|true| +|contents|.LinkedPage.LinkedChild|true| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingAbsoluteSymbolicLink/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingAbsoluteSymbolicLink/properties.xml new file mode 100644 index 0000000..9d32212 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingAbsoluteSymbolicLink/properties.xml @@ -0,0 +1,10 @@ + + + + + + + + 1197255380696 + -4394329366322317351 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingBackwardSymbolicLink/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingBackwardSymbolicLink/content.txt new file mode 100644 index 0000000..b471ad7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingBackwardSymbolicLink/content.txt @@ -0,0 +1,24 @@ +!include CreateBackwardSymbolicLink + +Creating a symlink will redirect back to the properties page. +!|Response Examiner.| +|type |pattern |matches? |contents?| +|contents|Location: /LinkingPage.LinkingChild\?properties|true|| + +Let's have a look at the properties view. +!|Response Requester.| +|uri |status?| +|LinkingPage.LinkingChild?properties|200| + +!********************> RESPONSE DATA +!|Response Examiner. | +|type |wrappedHtml?| +|contents| | + +****! + +The newly created symbolic link will be listed along with a link to the linked page. +!|Response Examiner.| +|type |pattern|matches?| +|contents|SymLink|true| +|contents||true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingBackwardSymbolicLink/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingBackwardSymbolicLink/properties.xml new file mode 100644 index 0000000..ed483b4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingBackwardSymbolicLink/properties.xml @@ -0,0 +1,10 @@ + + + + + + + + 1229174292637 + -3854706494573614483 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingNestedBackSymbolicLink/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingNestedBackSymbolicLink/content.txt new file mode 100644 index 0000000..33225ff --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingNestedBackSymbolicLink/content.txt @@ -0,0 +1,24 @@ +!include CreateNestedBackSymbolicLink + +Creating a symlink will redirect back to the properties page. +!|Response Examiner.| +|type |pattern |matches? |contents?| +|contents|Location: /LinkingPage.LinkingChild.LinkingGrandChild.LinkingGreatGrandChild\?properties|true|| + +Let's have a look at the properties view. +!|Response Requester.| +|uri |status?| +|LinkingPage.LinkingChild.LinkingGrandChild.LinkingGreatGrandChild?properties|200| + +!********************> RESPONSE DATA +!|Response Examiner. | +|type |wrappedHtml?| +|contents| | + +****! + +The newly created symbolic link will be listed along with a link to the linked page. +!|Response Examiner.| +|type |pattern|matches?| +|contents|SymLink|true| +|contents||true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingNestedBackSymbolicLink/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingNestedBackSymbolicLink/properties.xml new file mode 100644 index 0000000..01221c0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingNestedBackSymbolicLink/properties.xml @@ -0,0 +1,10 @@ + + + + + + + + 1229174317653 + -4935147002126621191 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingRelativeSymbolicLink/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingRelativeSymbolicLink/content.txt new file mode 100644 index 0000000..29d589a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingRelativeSymbolicLink/content.txt @@ -0,0 +1,17 @@ +!include CreateRelativeSymbolicLink + +Creating a symlink will redirect back to the properties page. +!|Response Examiner.| +|type |pattern|matches?|contents?| +|contents|Location: /LinkingPage\?properties|true|| + +Let's have a look at the properties view. +!|Response Requester.| +|uri |status?| +|LinkingPage?properties|200| + +The newly created symbolic link will be listed along with a link to the linked page. +!|Response Examiner.| +|type |pattern|matches?| +|contents|SymLink|true| +|contents|LinkedPage|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingRelativeSymbolicLink/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingRelativeSymbolicLink/properties.xml new file mode 100644 index 0000000..50b12d5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingRelativeSymbolicLink/properties.xml @@ -0,0 +1,10 @@ + + + + + + + + 1197229581691 + 2915598339411026699 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingSubPageSymbolicLink/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingSubPageSymbolicLink/content.txt new file mode 100644 index 0000000..7fd40c6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingSubPageSymbolicLink/content.txt @@ -0,0 +1,24 @@ +!include CreateSubPageSymbolicLink + +Creating a symlink will redirect back to the properties page. +!|Response Examiner.| +|type |pattern |matches? |contents?| +|contents|Location: /LinkingPage\?properties|true|| + +Let's have a look at the properties view. +!|Response Requester.| +|uri |status?| +|LinkingPage?properties|200| + +!********************> RESPONSE DATA +!|Response Examiner. | +|type |wrappedHtml?| +|contents| | + +****! + +The newly created symbolic link will be listed along with a link to the linked page. +!|Response Examiner.| +|type |pattern|matches?| +|contents|SymLink|true| +|contents|>LinkedChild|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingSubPageSymbolicLink/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingSubPageSymbolicLink/properties.xml new file mode 100644 index 0000000..bc6a93a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestCreatingSubPageSymbolicLink/properties.xml @@ -0,0 +1,10 @@ + + + + + + + + 1229174346758 + 2734488844082203904 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestRemovingSymbolicLink/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestRemovingSymbolicLink/content.txt new file mode 100644 index 0000000..d057b40 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestRemovingSymbolicLink/content.txt @@ -0,0 +1,35 @@ +Removing a Symbolic Link is also done from the properties view of the page containing the link. Each link in the list will have an '''Unlink''' link that will perform the removal of the link. The link contains a URL of the form: + +!-
http://host/PathToPage?responder=symlink&remove=-!''nameOfLink''!-
-! + +But first we need to create a link to remove. +!include CreateRelativeSymbolicLink + +When we look at the properties page we'll see the Unlink link. +!|Response Requester. | +|uri |status?| +|LinkingPage?properties|200 | + +!|Response Examiner. | +|type |pattern |matches?|contents?| +|contents|Unlink|true | | + +Now click the '''remove''' link. +!|Response Requester. | +|uri |status?| +|LinkingPage?responder=symlink&removal=SymLink|303 | + +This should remove the symbolic link and redirect back to the properties view. +!|Response Examiner. | +|type |pattern |matches?|contents?| +|contents|Location: /LinkingPage\?properties|true | | + +When we look at the properties page again, the symbolic link will no longer be listed. +!|Response Requester. | +|uri |status?|contents?| +|LinkingPage?properties|200 | | + + +!|Response Examiner. | +|type |pattern|matches?| +|contents|SymLink|false | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestRemovingSymbolicLink/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestRemovingSymbolicLink/properties.xml new file mode 100644 index 0000000..9581694 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestRemovingSymbolicLink/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + 1197477610797 + 4640860309643798136 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestRenameSymbolicLink/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestRenameSymbolicLink/content.txt new file mode 100644 index 0000000..712ec6d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestRenameSymbolicLink/content.txt @@ -0,0 +1,41 @@ +Renaming a Symbolic Link is done from the properties view of the page containing the link. Each link in the list will have a '''Rename''' link that will initiate the renaming. The link contains a URL of the form: +!***********************************************< HIDDEN +!define CODE {!-
-!}
+!define code {!-
-!} +!define B {!--!} +!define b {!--!} +!define VAR {!--!} +!define var {!--!} +********************************************************! +${CODE}${B}!-http://host/PathToPage?responder=symlink&rename=-!${b}${VAR}nameOfLink${var}${B}&newname=${b}${VAR}newNameForLink${var}${code} + +But first we need to create a link to rename. +!include CreateRelativeSymbolicLink + +When we look at the properties page we'll see the rename link. +!|Response Requester.| +|uri |status?| +|LinkingPage?properties|200| +!|Response Examiner.| +|type |pattern|matches?|contents?| +|contents|SymLink|true|| +|contents|Rename|true|| + +Now click the '''Rename''' link. +!|Response Requester.| +|uri |status?| +|LinkingPage?responder=symlink&rename=SymLink&newname=NewLink|303| + +This should change the name of the symbolic link and redirect back to the properties view. +!|Response Examiner.| +|type |pattern|matches?|contents?| +|contents|Location: /LinkingPage\?properties|true|| + +When we look at the properties page again, the symbolic link will have a different name. +!|Response Requester.| +|uri |status?| +|LinkingPage?properties|200| +!|Response Examiner.| +|type |pattern|matches?| +|contents|NewLink|true| +|contents|SymLink|false| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestRenameSymbolicLink/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestRenameSymbolicLink/properties.xml new file mode 100644 index 0000000..40abe66 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestRenameSymbolicLink/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + 1197480508771 + 901290760874247319 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestSymbolicLinkBehavior/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestSymbolicLinkBehavior/content.txt new file mode 100644 index 0000000..804a97e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestSymbolicLinkBehavior/content.txt @@ -0,0 +1,24 @@ +After a Symbolic Link is created, it is possible to view it as a normal page as well as it's children. + +!include CreateRelativeSymbolicLink + +Now add a child on the linked page. +!|Page creator.| +|Page name.|valid?| +|LinkedPage.ChildPage|true| + +Let's load and view the symbolic link page. +!|Response Requester.| +|uri |status?| +|LinkingPage.SymLink|200| +!|Response Examiner.| +|type |pattern|matches?| +|contents|LinkingPage.SymLink|true| + +Now let's load and view the child page beneath the symbolic link page. +!|Response Requester.| +|uri |status?| +|LinkingPage.SymLink.ChildPage|200| +!|Response Examiner.| +|type |pattern|matches?| +|contents|LinkingPage.SymLink.ChildPage|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestSymbolicLinkBehavior/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestSymbolicLinkBehavior/properties.xml new file mode 100644 index 0000000..7a1546e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/TestSymbolicLinkBehavior/properties.xml @@ -0,0 +1,11 @@ + + + + + 20081020135130 + + + + 1197229640317 + -8101656042803795127 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/content.txt new file mode 100644 index 0000000..0f89b13 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/content.txt @@ -0,0 +1,14 @@ +!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. + + +>TestCreatingRelativeSymbolicLink +>TestCreatingAbsoluteSymbolicLink +>TestCreatingSubPageSymbolicLink +>TestCreatingBackwardSymbolicLink +>TestRemovingSymbolicLink +>TestSymbolicLinkBehavior +---- +All Subpages: +!contents \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/properties.xml new file mode 100644 index 0000000..3b4d24d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteSymbolicLinkTests/properties.xml @@ -0,0 +1,12 @@ + + + + + 20071209232537 + + + + + 1197260737340 + 159061011507139978 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/ScenarioLibrary/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/ScenarioLibrary/content.txt new file mode 100644 index 0000000..9ec02d9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/ScenarioLibrary/content.txt @@ -0,0 +1,58 @@ +!|scenario|get history for page|page| +|check|request page|@page?pageHistory|200| +|$TESTPAGE=|echo|@page| +|show|content| + +!|scenario|get top level history| +|check|request page|?testHistory|200| +|show|content| + +!|scenario|the number of page histories should be|number| +|check|count of tag|TR|with id prefix|pageHistoryRow|@number| + +!|scenario|the page history bar for|date|should have|number|elements of class|class| +|$date=|page history date signature of|@date| +|check|count of tag|TD|with class|element @class|below tag|TR|with id prefix|pageHistoryRow_$date|@number| + +!|scenario|the page title should be|title| +|ensure|content contains|

@title

| + +!|scenario|the page title should be a link to|page |with value |value | +|ensure |content contains |<${TITLE_TAG}>@value| + + +!|scenario|the bread crumb|crumb|should be a link to|page| +|ensure|content contains|@crumb| + +!|scenario|The page history bar for|date|should have a|id|with class|class|and value|value| +|$date=|page history date signature of|@date| +|ensure|content of tag with id|pageHistoryRow_$date|contains|@value| +|show|content of tag with id|pageHistoryRow_$date| + +!|scenario|The page history bar for|date|should have a date field with class|class| +|$date=|page history date signature of|@date| +|ensure|content of tag with id|pageHistoryRow_$date|contains|| + +!|scenario|the top level history line for|page|is a link to the page history| +|ensure|content contains|@page| + +!|scenario|The page history line for|date|should be a link to result|resultDate| +|ensure|content contains|@date| + +!|scenario|the top level history line for|page|should have a|class|link with|sign|to result|resultDate| +|ensure|content contains|@sign| + +!|scenario|the top level history line for|page|should not have a link to|resultDate| +|reject|content contains|| + +!|scenario|class for pass fail in top level history line|page||pass class||pass count||fail class||fail count| +|ensure|html contains|@page @passCount @failCount| + +!|scenario|assume time is|time| +|freeze clock at|@time| + +!|scenario|with subpage|name|with content|content| +|create page|$IT.@name|with content|@content| + +!|scenario|run suite|name| +|check|request page|@name?suite|200| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/ScenarioLibrary/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/ScenarioLibrary/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/ScenarioLibrary/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SetUp/content.txt new file mode 100644 index 0000000..1035b58 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SetUp/content.txt @@ -0,0 +1,14 @@ +!|Import| +|fitnesse.fixtures| + +!define TEST_HISTORY_DAYS {15} +!| SetUp | test.history.days=${TEST_HISTORY_DAYS} | + +|Library| +|page driver| +|echo fixture| + +!|Library| +|page driver| +|echo fixture| +|clock fixture| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SetUp/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SetUp/properties.xml new file mode 100644 index 0000000..a16a90f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SetUp/properties.xml @@ -0,0 +1,11 @@ + + +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/ExecutionLogOfSuitePage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/ExecutionLogOfSuitePage/content.txt new file mode 100644 index 0000000..e69de29 diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/ExecutionLogOfSuitePage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/ExecutionLogOfSuitePage/properties.xml new file mode 100644 index 0000000..12e51d6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/ExecutionLogOfSuitePage/properties.xml @@ -0,0 +1,4 @@ + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/SuiteExecutionCleansUpHistory/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/SuiteExecutionCleansUpHistory/content.txt new file mode 100644 index 0000000..4dcfa70 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/SuiteExecutionCleansUpHistory/content.txt @@ -0,0 +1,60 @@ +!***> Add lots of page history + +!| page history | +| name | date | right | wrong | ignores | exceptions | +| SuiteOne | 1-May-2009 | 20 | 30 | 0 | 0 | +| SuiteOne | 2-May-2009 | 20 | 0 | 0 | 0 | +| SuiteOne | 3-May-2009 | 0 | 0 | 1 | 0 | +| SuiteOne | 4-May-2009 | 0 | 0 | 0 | 1 | +| SuiteOne | 5-May-2009 | 0 | 1 | 0 | 0 | +| SuiteOne | 6-May-2009 | 0 | 1 | 0 | 1 | +| SuiteOne | 7-May-2009 | 0 | 0 | 0 | 0 | +| SuiteOne | 8-May-2009 | 0 | 1 | 0 | 0 | +| SuiteOne | 9-May-2009 | 0 | 1 | 0 | 0 | +| SuiteOne | 10-May-2009 | 0 | 1 | 0 | 0 | +| SuiteOne | 11-May-2009 | 0 | 1 | 0 | 0 | +| SuiteOne | 12-May-2009 | 0 | 1 | 0 | 0 | +| SuiteOne | 13-May-2009 | 0 | 1 | 0 | 0 | +| SuiteOne | 14-May-2009 | 0 | 1 | 0 | 0 | +| SuiteOne | 15-May-2009 | 0 | 1 | 0 | 0 | +| SuiteOne | 16-May-2009 | 0 | 1 | 0 | 0 | +| SuiteOne | 17-May-2009 | 0 | 1 | 0 | 0 | +| SuiteOne | 18-May-2009 | 0 | 1 | 0 | 0 | +| SuiteOne | 19-May-2009 | 0 | 1 | 0 | 0 | +| SuiteOne | 20-May-2009 | 0 | 1 | 0 | 0 | +| SuiteOne | 21-May-2009 | 0 | 1 | 0 | 0 | + +*! +!***< hidding defines + +!define PASSING_TEST {!|script|fitnesse.slim.test.EchoScript| +| check | echo | 7 | 7 | + +} + +!define SUITE_ONE {${SUT_PATH} +!define TEST_SYSTEM (slim) +} + +*! +After a test run, the test history is cleaned up. In order to do so, the property ''test.history.days'' has been set to ${TEST_HISTORY_DAYS} days. + +Precondition: + +!| script | +| assume time is | 5/22/2009 01:00:00 | +| given page | SuiteOne | with content | ${SUITE_ONE} | +| with subpage | TestOne | with content | ${PASSING_TEST} | +| get history for page | SuiteOne | +| the number of page histories should be | 21 | + +Action: + +!| script | +| run suite | SuiteOne | + +Result: + +!| script | +| get history for page | SuiteOne | +| the number of page histories should be | ${TEST_HISTORY_DAYS} | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/SuiteExecutionCleansUpHistory/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/SuiteExecutionCleansUpHistory/properties.xml new file mode 100644 index 0000000..b5eaa92 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/SuiteExecutionCleansUpHistory/properties.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/content.txt new file mode 100644 index 0000000..19bd693 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/content.txt @@ -0,0 +1 @@ +!contents -g \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/properties.xml new file mode 100644 index 0000000..b4d33df --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecution/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/ExecutionLogOfSuitePage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/ExecutionLogOfSuitePage/content.txt new file mode 100644 index 0000000..2815043 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/ExecutionLogOfSuitePage/content.txt @@ -0,0 +1,28 @@ +!| script | +| given page | SuitePage | with content | ${SUT_PATH} !- +!define TEST_SYSTEM {slim} +-! | +| given page | SuitePage.TestPage | with content | !- +| import | +| fitnesse.slim.test | + +| script:echo script | +| echo to stdout | This is standard output | +| echo to stderr | This is error output | +-! | +|check |request page |SuitePage?suite |200 | + +!|script | +|check |request page |SuitePage?executionLog |200 | +| ensure | content contains | slim:fitnesse.slim.SlimService | +| ensure | content contains | This is standard output | +| ensure | content contains | This is error output | +|show collapsed |content | + +!|script | +|check |request page |SuitePage.TestPage?executionLog |200 | +| ensure | content contains | This test ran as part of a suite. | +| ensure | content contains | This is standard output | +| ensure | content contains | This is error output | +|show collapsed |content | + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/ExecutionLogOfSuitePage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/ExecutionLogOfSuitePage/properties.xml new file mode 100644 index 0000000..e11db7c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/ExecutionLogOfSuitePage/properties.xml @@ -0,0 +1,14 @@ + + +true +true + +true +true +true +true + +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/ExecutionLogOfTestPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/ExecutionLogOfTestPage/content.txt new file mode 100644 index 0000000..2acf137 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/ExecutionLogOfTestPage/content.txt @@ -0,0 +1,41 @@ +!define BlockEnd {-!} + +!| script | +| given page | TestPage | with content | ${SUT_PATH} !- +!define TEST_SYSTEM {slim} + +| import | +| fitnesse.slim.test | + +| script:echo script | +| echo to stdout | This is standard output | +| echo to stderr | This is error output | +| echo to stdout | !-This is multiline std output +std line 2 +std line 3-!${BlockEnd}!- | +| echo to stderr | !-This is multiline error output +error line 2 +error line 3 +-!${BlockEnd}!- | + +-! | +|check |request page |TestPage?test |200 | +|check |request page |TestPage?executionLog |200 | +| ensure | content contains | slim:fitnesse.slim.SlimService | +| ensure | html without | \r| contains | !- +

Standard Output:

+
This is standard output
+This is multiline std output
+std line 2
+std line 3
+
+
+

Standard Error:

+
This is error output
+This is multiline error output
+error line 2
+error line 3
+
+
-!| +|show collapsed |content | + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/ExecutionLogOfTestPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/ExecutionLogOfTestPage/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/ExecutionLogOfTestPage/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/content.txt new file mode 100644 index 0000000..990fb6f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/content.txt @@ -0,0 +1 @@ +!contents -R2 -g -p -f -h \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/properties.xml new file mode 100644 index 0000000..654ea05 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteExecutionLog/properties.xml @@ -0,0 +1,14 @@ + + +true +true + +true +true +true +true +true + +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryFailCountIsSumOfFailuresAndExceptions/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryFailCountIsSumOfFailuresAndExceptions/content.txt new file mode 100644 index 0000000..f0ab399 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryFailCountIsSumOfFailuresAndExceptions/content.txt @@ -0,0 +1,9 @@ +!|page history| +|name|date|right|wrong|ignores|exceptions| +|TestPage|5-May-2009|0|30|0|15| + +-!|script| +|get history for page|TestPage| +|the number of page histories should be|1| +|The page history bar for|5-May-2009|should have a|fail_count|with class|fail|and value|45| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryFailCountIsSumOfFailuresAndExceptions/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryFailCountIsSumOfFailuresAndExceptions/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryFailCountIsSumOfFailuresAndExceptions/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryForSuiteCountsTestsNotAsserts/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryForSuiteCountsTestsNotAsserts/content.txt new file mode 100644 index 0000000..ad8d9ff --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryForSuiteCountsTestsNotAsserts/content.txt @@ -0,0 +1,26 @@ +!*< hidding defines +!define PASSING_TEST {!|script|fitnesse.slim.test.EchoScript| +|check|echo|7|7| +} + +!define FAILING_TEST {!|script|fitnesse.slim.test.EchoScript| +|check|echo|7|8| +} + +!define SUITE_ONE {${SUT_PATH} +!define TEST_SYSTEM (slim) +} +*! + +!|script| +|assume time is|12/5/2009 00:00:00| +|given page|SuiteOne|with content|${SUITE_ONE}| +|with subpage|TestOne|with content|${PASSING_TEST}| +|with subpage|TestTwo|with content|${PASSING_TEST}| +|with subpage|TestThree|with content|${FAILING_TEST}| +|run suite|SuiteOne| +|get history for page|SuiteOne| +|the number of page histories should be|1| +|The page history bar for|5-Dec-2009|should have a|fail_count|with class|fail|and value|1| +|The page history bar for|5-Dec-2009|should have a|pass_count|with class|pass|and value|2| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryForSuiteCountsTestsNotAsserts/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryForSuiteCountsTestsNotAsserts/properties.xml new file mode 100644 index 0000000..28d2783 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryForSuiteCountsTestsNotAsserts/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasBreadCrumbs/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasBreadCrumbs/content.txt new file mode 100644 index 0000000..6266729 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasBreadCrumbs/content.txt @@ -0,0 +1,16 @@ +!|page history| +|name|date|right|wrong|ignores|exceptions| +|SuitePage.TestPage|5-May-2009|20|30|0|0| + +!|script| +|get history for page|SuitePage.TestPage| +|the number of page histories should be|1| +|the page title should be a link to|SuitePage.TestPage|with value|TestPage| +|the bread crumb|SuitePage|should be a link to|SuitePage| + +|Response Examiner| +|wrapped html?| +|| + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasBreadCrumbs/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasBreadCrumbs/properties.xml new file mode 100644 index 0000000..266fef9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasBreadCrumbs/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreenDateFieldIfNoErrors/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreenDateFieldIfNoErrors/content.txt new file mode 100644 index 0000000..d434095 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreenDateFieldIfNoErrors/content.txt @@ -0,0 +1,9 @@ +!|page history| +|name|date|right|wrong|ignores|exceptions| +|TestPage|5-May-2009|20|00|0|0| + +!|script| +|get history for page|TestPage| +|the number of page histories should be|1| +|The page history bar for|5-May-2009|should have a date field with class|pass| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreenDateFieldIfNoErrors/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreenDateFieldIfNoErrors/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreenDateFieldIfNoErrors/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreenPassCountWhenNonZero/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreenPassCountWhenNonZero/content.txt new file mode 100644 index 0000000..7e3eb82 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreenPassCountWhenNonZero/content.txt @@ -0,0 +1,9 @@ +!|page history| +|name|date|right|wrong|ignores|exceptions| +|TestPage|5-May-2009|20|30|0|0| + +!|script| +|get history for page|TestPage| +|the number of page histories should be|1| +|The page history bar for|5-May-2009|should have a|pass_count|with class|pass|and value|20| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreenPassCountWhenNonZero/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreenPassCountWhenNonZero/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreenPassCountWhenNonZero/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyDateIfNeitherPassNorFail/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyDateIfNeitherPassNorFail/content.txt new file mode 100644 index 0000000..bc2f523 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyDateIfNeitherPassNorFail/content.txt @@ -0,0 +1,9 @@ +!|page history| +|name|date|right|wrong|ignores|exceptions| +|TestPage|5-May-2009|0|0|0|0| + +!|script| +|get history for page|TestPage| +|the number of page histories should be|1| +|The page history bar for|5-May-2009|should have a date field with class|ignore| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyDateIfNeitherPassNorFail/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyDateIfNeitherPassNorFail/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyDateIfNeitherPassNorFail/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyFailureCountWhenZero/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyFailureCountWhenZero/content.txt new file mode 100644 index 0000000..4ef465d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyFailureCountWhenZero/content.txt @@ -0,0 +1,9 @@ +!|page history| +|name|date|right|wrong|ignores|exceptions| +|TestPage|5-May-2009|20|0|0|0| + +!|script| +|get history for page|TestPage| +|the number of page histories should be|1| +|The page history bar for|5-May-2009|should have a|fail_count|with class|ignore|and value|0| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyFailureCountWhenZero/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyFailureCountWhenZero/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyFailureCountWhenZero/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyPassCountWhenZero/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyPassCountWhenZero/content.txt new file mode 100644 index 0000000..1805b3a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyPassCountWhenZero/content.txt @@ -0,0 +1,9 @@ +!|page history| +|name|date|right|wrong|ignores|exceptions| +|TestPage|5-May-2009|0|30|0|0| + +!|script| +|get history for page|TestPage| +|the number of page histories should be|1| +|The page history bar for|5-May-2009|should have a|pass_count|with class|ignore|and value|0| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyPassCountWhenZero/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyPassCountWhenZero/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasGreyPassCountWhenZero/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasRedDateFieldIfFailure/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasRedDateFieldIfFailure/content.txt new file mode 100644 index 0000000..22353ed --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasRedDateFieldIfFailure/content.txt @@ -0,0 +1,9 @@ +!|page history| +|name|date|right|wrong|ignores|exceptions| +|TestPage|5-May-2009|0|20|0|0| + +!|script| +|get history for page|TestPage| +|the number of page histories should be|1| +|The page history bar for|5-May-2009|should have a date field with class|fail| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasRedDateFieldIfFailure/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasRedDateFieldIfFailure/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasRedDateFieldIfFailure/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasRedFailureCountWhenNonZero/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasRedFailureCountWhenNonZero/content.txt new file mode 100644 index 0000000..ccaaeab --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasRedFailureCountWhenNonZero/content.txt @@ -0,0 +1,9 @@ +!|page history| +|name|date|right|wrong|ignores|exceptions| +|TestPage|5-May-2009|20|30|0|0| + +!|script| +|get history for page|TestPage| +|the number of page histories should be|1| +|The page history bar for|5-May-2009|should have a|fail_count|with class|fail|and value|30| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasRedFailureCountWhenNonZero/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasRedFailureCountWhenNonZero/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryHasRedFailureCountWhenNonZero/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryLineIsLinkToTestResult/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryLineIsLinkToTestResult/content.txt new file mode 100644 index 0000000..3494a1b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryLineIsLinkToTestResult/content.txt @@ -0,0 +1,9 @@ +!|page history| +|name|date|right|wrong|ignores|exceptions| +|TestPage|5-May-2009|20|30|0|0| + +!|script| +|get history for page|TestPage| +|The page history line for|05 May, 09 00:00|should be a link to result|20090505000000| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryLineIsLinkToTestResult/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryLineIsLinkToTestResult/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryLineIsLinkToTestResult/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryWithOneTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryWithOneTest/content.txt new file mode 100644 index 0000000..a439de2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryWithOneTest/content.txt @@ -0,0 +1,13 @@ +!|page history| +|name|date|right|wrong|ignores|exceptions| +|TestPage|5-May-2009|20|30|0|0| + +!|script| +|get history for page|TestPage| +|the number of page histories should be|1| + +|the page history bar for|date|should have|number|elements of class|class| +|date|number|class| +|5-May-2009|20|pass| +|5-May-2009|30|fail| +|5-May-2009|0|ignore| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryWithOneTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryWithOneTest/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryWithOneTest/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryWithTwoTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryWithTwoTests/content.txt new file mode 100644 index 0000000..ca39dd0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryWithTwoTests/content.txt @@ -0,0 +1,17 @@ +!|page history| +|name|date|right|wrong|ignores|exceptions| +|TestPage|5-May-2009|20|30|0|0| +|TestPage|6-May-2009|60|40|0|0| + +!|script| +|get history for page|TestPage| +|the number of page histories should be|2| + +|the page history bar for|date|should have|n|elements of class|class| +|date|number|class| +|5-May-2009|10|pass| +|5-May-2009|15|fail| +|5-May-2009|25|ignore| +|6-May-2009|30|pass| +|6-May-2009|20|fail| +|6-May-2009|0|ignore| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryWithTwoTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryWithTwoTests/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/PageHistoryWithTwoTests/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/content.txt new file mode 100644 index 0000000..a5bed47 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/content.txt @@ -0,0 +1,2 @@ +!contents -R2 -g -p -f -h + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/properties.xml new file mode 100644 index 0000000..6e9e1e6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTestHistoryTests/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineIsLinkToPageHistory/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineIsLinkToPageHistory/content.txt new file mode 100644 index 0000000..6bf7eb0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineIsLinkToPageHistory/content.txt @@ -0,0 +1,13 @@ +!|page history| +|name|date|right|wrong|ignores|exceptions| +|SuitePage.TestPage|5-May-2009|20|30|0|0| + +!|script| +|get top level history| +|the top level history line for|SuitePage.TestPage|is a link to the page history| + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineIsLinkToPageHistory/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineIsLinkToPageHistory/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineIsLinkToPageHistory/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineResultElementsAreLinksToTestResults/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineResultElementsAreLinksToTestResults/content.txt new file mode 100644 index 0000000..2bfd289 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineResultElementsAreLinksToTestResults/content.txt @@ -0,0 +1,13 @@ +!|page history| +|name|date|right|wrong|ignores|exceptions| +|SuitePage.TestPage|5-May-2009|20|30|0|0| + +!|script| +|get top level history| +|the top level history line for|SuitePage.TestPage|should have a|fail|link with|-|to result|20090505000000| + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineResultElementsAreLinksToTestResults/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineResultElementsAreLinksToTestResults/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineResultElementsAreLinksToTestResults/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineShouldShowLastTwentyResults/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineShouldShowLastTwentyResults/content.txt new file mode 100644 index 0000000..4924ee5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineShouldShowLastTwentyResults/content.txt @@ -0,0 +1,53 @@ +The page history shows the last 20 test results. Below table is larger, so the last tests drop off. + +!| page history | +| name | date | right | wrong | ignores | exceptions | +| SuitePage.TestPage | 1-May-2009 | 20 | 30 | 0 | 0 | +| SuitePage.TestPage | 2-May-2009 | 20 | 0 | 0 | 0 | +| SuitePage.TestPage | 3-May-2009 | 0 | 0 | 1 | 0 | +| SuitePage.TestPage | 4-May-2009 | 0 | 0 | 0 | 1 | +| SuitePage.TestPage | 5-May-2009 | 0 | 1 | 0 | 0 | +| SuitePage.TestPage | 6-May-2009 | 0 | 1 | 0 | 1 | +| SuitePage.TestPage | 7-May-2009 | 0 | 0 | 0 | 0 | +| SuitePage.TestPage | 8-May-2009 | 0 | 1 | 0 | 0 | +| SuitePage.TestPage | 9-May-2009 | 0 | 1 | 0 | 0 | +| SuitePage.TestPage | 10-May-2009 | 0 | 1 | 0 | 0 | +| SuitePage.TestPage | 11-May-2009 | 0 | 1 | 0 | 0 | +| SuitePage.TestPage | 12-May-2009 | 0 | 1 | 0 | 0 | +| SuitePage.TestPage | 13-May-2009 | 0 | 1 | 0 | 0 | +| SuitePage.TestPage | 14-May-2009 | 0 | 1 | 0 | 0 | +| SuitePage.TestPage | 15-May-2009 | 0 | 1 | 0 | 0 | +| SuitePage.TestPage | 16-May-2009 | 0 | 1 | 0 | 0 | +| SuitePage.TestPage | 17-May-2009 | 0 | 1 | 0 | 0 | +| SuitePage.TestPage | 18-May-2009 | 0 | 1 | 0 | 0 | +| SuitePage.TestPage | 19-May-2009 | 0 | 1 | 0 | 0 | +| SuitePage.TestPage | 20-May-2009 | 0 | 1 | 0 | 0 | +| SuitePage.TestPage | 21-May-2009 | 0 | 1 | 0 | 0 | + +!| script | +| get top level history | + +!| script | +| the top level history line for | SuitePage.TestPage | should not have a link to | 20090501000000 | + +!| the top level history line for | page | should have a | class | link with | sign | to result | resultDate | +| page | class | sign | resultDate | +| SuitePage.TestPage | pass | + | 20090502000000 | +| SuitePage.TestPage | ignore | - | 20090503000000 | +| SuitePage.TestPage | error | - | 20090504000000 | +| SuitePage.TestPage | fail | - | 20090505000000 | +| SuitePage.TestPage | fail | - | 20090506000000 | +| SuitePage.TestPage | ignore | - | 20090507000000 | +| SuitePage.TestPage | fail | - | 20090508000000 | +| SuitePage.TestPage | fail | - | 20090509000000 | +| SuitePage.TestPage | fail | - | 20090510000000 | +| SuitePage.TestPage | fail | - | 20090511000000 | +| SuitePage.TestPage | fail | - | 20090512000000 | +| SuitePage.TestPage | fail | - | 20090513000000 | +| SuitePage.TestPage | fail | - | 20090514000000 | +| SuitePage.TestPage | fail | - | 20090515000000 | +| SuitePage.TestPage | fail | - | 20090516000000 | +| SuitePage.TestPage | fail | - | 20090517000000 | +| SuitePage.TestPage | fail | - | 20090518000000 | +| SuitePage.TestPage | fail | - | 20090519000000 | +| SuitePage.TestPage | fail | - | 20090520000000 | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineShouldShowLastTwentyResults/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineShouldShowLastTwentyResults/properties.xml new file mode 100644 index 0000000..28d2783 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineShouldShowLastTwentyResults/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineShouldShowPassFailResultsInColor/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineShouldShowPassFailResultsInColor/content.txt new file mode 100644 index 0000000..1aa977e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineShouldShowPassFailResultsInColor/content.txt @@ -0,0 +1,18 @@ +!|page history| +|name |date |right|wrong|ignores|exceptions| +|OneFailPage |5-May-2009|20 |30 |0 |0 | +|OnePassPage |5-May-2009|20 |0 |0 |0 | +|OnePassOneFail|5-May-2009|1 |0 |0 |0 | +|OnePassOneFail|6-May-2009|0 |1 |0 |0 | +|OneError |5-May-2009|0 |0 |0 |1 | + +!|script| +|get top level history| + +!|class for pass fail in top level history line| +|page |pass class|pass count|fail class|fail count| +|OneFailPage |ignore |0 |fail |1 | +|OnePassPage |pass |1 |ignore |0 | +|OnePassOneFail|pass |1 |fail |1 | +|OneError |ignore |0 |fail |1 | + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineShouldShowPassFailResultsInColor/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineShouldShowPassFailResultsInColor/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryLineShouldShowPassFailResultsInColor/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryShouldHaveTitle/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryShouldHaveTitle/content.txt new file mode 100644 index 0000000..49ed067 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryShouldHaveTitle/content.txt @@ -0,0 +1,7 @@ +!| page history | +| name | date | right | wrong | ignores | exceptions | +| SuitePage.TestPage | 5-May-2009 | 20 | 30 | 0 | 0 | + +!| script | +| get top level history | +| the page title should be | Test history | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryShouldHaveTitle/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryShouldHaveTitle/properties.xml new file mode 100644 index 0000000..266fef9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/TopLevelHistoryShouldHaveTitle/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/content.txt new file mode 100644 index 0000000..990fb6f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/content.txt @@ -0,0 +1 @@ +!contents -R2 -g -p -f -h \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/properties.xml new file mode 100644 index 0000000..6e9e1e6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/SuiteTopLevelTestHistory/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/content.txt new file mode 100644 index 0000000..d5565d1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/content.txt @@ -0,0 +1,2 @@ +!define TEST_SYSTEM {slim} +!contents -R2 -g -p -f -h \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/properties.xml new file mode 100644 index 0000000..4e905a5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestHistory/properties.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/CanHandleInvalidTestSystemName/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/CanHandleInvalidTestSystemName/content.txt new file mode 100644 index 0000000..4b3dbff --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/CanHandleInvalidTestSystemName/content.txt @@ -0,0 +1,8 @@ +!| script | +|create page|TestPage|with content|!-!define TEST_SYSTEM {foo} +-! | + +!| script | +|check |request page |TestPage?test |200 | +|ensure|content contains|Unknown test system: 'foo'| +|show |content | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/CanHandleInvalidTestSystemName/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/CanHandleInvalidTestSystemName/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/CanHandleInvalidTestSystemName/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/ClassPathWithSpace/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/ClassPathWithSpace/content.txt new file mode 100644 index 0000000..8e2fd68 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/ClassPathWithSpace/content.txt @@ -0,0 +1,10 @@ +!3 A space in the classpath must still allow to start the test system +!path abc xyz + +!3 A trailing space in classpath definition must still allow to start the test system +!define TS (trailingspace ) +!path ${TS} +#!path trailingspace + +|script | +|check|echo|pass|pass| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/ClassPathWithSpace/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/ClassPathWithSpace/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/ClassPathWithSpace/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/ConnectionErrorInFitTestSystem/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/ConnectionErrorInFitTestSystem/content.txt new file mode 100644 index 0000000..687e945 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/ConnectionErrorInFitTestSystem/content.txt @@ -0,0 +1,14 @@ +#!define TEST_SYSTEM {fit} +#|fitnesse.fixtures.SystemExitTable| +#|system exit code | +#|3 | + +!| script | +|given page|TestPage|with content|${SUT_PATH} !- +!define TEST_SYSTEM {fit} + +|fitnesse.fixtures.SystemExitTable| +|system exit code | +|3 | +-! | +|test results for page|TestPage |should contain|Could not complete testing:| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/ConnectionErrorInFitTestSystem/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/ConnectionErrorInFitTestSystem/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/ConnectionErrorInFitTestSystem/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/SetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/SetUp/content.txt new file mode 100644 index 0000000..ec6431d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/SetUp/content.txt @@ -0,0 +1,5 @@ +!include + +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/TestWithCustomTestSystem/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/TestWithCustomTestSystem/content.txt new file mode 100644 index 0000000..9597503 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/TestWithCustomTestSystem/content.txt @@ -0,0 +1,11 @@ +!| add test system | echo | fitnesse.testsystems.example.EchoTestSystemFactory | + +!| script | +| create page | TestPage | with content | !- +!define TEST_SYSTEM {echo} + +An example test does not have to be in table format +-! | +| check | request page | TestPage?test | 200 | +| ensure | content contains | TEST_SYSTEM=echo | +| show | content | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/TestWithCustomTestSystem/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/TestWithCustomTestSystem/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/TestWithCustomTestSystem/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/content.txt new file mode 100644 index 0000000..142a70f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/content.txt @@ -0,0 +1,4 @@ +!contents -R2 -g -p -f -h + +!define TEST_SYSTEM {slim} + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/properties.xml new file mode 100644 index 0000000..6e9e1e6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteTestSystems/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/DeletePage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/DeletePage/content.txt new file mode 100644 index 0000000..e8a090d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/DeletePage/content.txt @@ -0,0 +1,7 @@ +!help +#!| script | versions controller fixture | ${VERSION_CONTROLLER_CLASS} | +!| script | +| Given a wiki page with history | +| When the page is deleted | +|Then the deleted page can't be retrieved | +#| check | contentFromPage | TestPage| [Error: Page doesn't exists]| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/DeletePage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/DeletePage/properties.xml new file mode 100644 index 0000000..a558ab0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/DeletePage/properties.xml @@ -0,0 +1,14 @@ + + + true + true + Delete a page will remove the history. + sa + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/NewPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/NewPage/content.txt new file mode 100644 index 0000000..2b2a383 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/NewPage/content.txt @@ -0,0 +1,5 @@ +!help +!| script | +| Given a new wiki page | +| Then the history size is ${Create_backup_for_initial_page_version}| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/NewPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/NewPage/properties.xml new file mode 100644 index 0000000..be6c558 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/NewPage/properties.xml @@ -0,0 +1,13 @@ + + + true + true + Create a new page might or might not create a backup file. + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/OldVersion/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/OldVersion/content.txt new file mode 100644 index 0000000..3456bbd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/OldVersion/content.txt @@ -0,0 +1,9 @@ +!help +!| script | +| Given a wiki page with history | +| Then the history size is ${= ${Create_backup_for_initial_page_version} +1 =}| +| Then the new version can be retrieved| +| Then the first version can be retrieved| + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/OldVersion/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/OldVersion/properties.xml new file mode 100644 index 0000000..3e0f1c4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/OldVersion/properties.xml @@ -0,0 +1,14 @@ + + + true + true + Check that the content of an older version can be retrieved + six42 + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/SavePage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/SavePage/content.txt new file mode 100644 index 0000000..13c4b85 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/SavePage/content.txt @@ -0,0 +1,7 @@ +!help + +!| script | +| Given a new wiki page | +| When the page is updated | +| Then the history size is ${= ${Create_backup_for_initial_page_version} +1 =}| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/SavePage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/SavePage/properties.xml new file mode 100644 index 0000000..16ad6f9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/SavePage/properties.xml @@ -0,0 +1,13 @@ + + + true + true + Save changes to an existing page will create a backup of the old contents. + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/content.txt new file mode 100644 index 0000000..99c097c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/content.txt @@ -0,0 +1 @@ +!contents -R2 -g -p -f -h diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/properties.xml new file mode 100644 index 0000000..a561830 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/BusinessRequirements/properties.xml @@ -0,0 +1,13 @@ + + + + + sa + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/content.txt new file mode 100644 index 0000000..86585d6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/content.txt @@ -0,0 +1,7 @@ +This page is required for technical reasons: +By setting the property flag "Skip (Recursive)" it stops the test suite from testing the business requirements directly. +The requirements should only be tested via suites which implement them and link to the requirements via a symbolic link. +if the "Skip (Recursive)" flag would be set on the >BusinessRequirements suite page direcly the suite would be skipped when called via a symbolic link. +Therfore this page is required. + +!contents -R2 -g -p -f -h \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/properties.xml new file mode 100644 index 0000000..c1a1479 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/BusinessCase/properties.xml @@ -0,0 +1,14 @@ + + + + + sa + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ScenarioLibrary/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ScenarioLibrary/content.txt new file mode 100644 index 0000000..12e30d5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ScenarioLibrary/content.txt @@ -0,0 +1,35 @@ +!| scenario | Given a new wiki page | +| create wiki root | +| save page | TestPage | with content | test data | + +!| scenario | When the page is updated | +| save page | TestPage | with content | new test data | + +!| scenario | Given a wiki page with history | +| Given a new wiki page | +| When the page is updated | + +!| scenario | When the page is again updated | +| save page | TestPage | with content | latest test data | + +!| scenario | When the page is deleted | +| delete page | TestPage | + +!| scenario | Then the first version can be retrieved | +| check | content for revision | 0 | test data | + +!| scenario | Then the second version can be retrieved | +| check | content for revision | 1 | new test data | +#| check | content for revision| 1 | from page | TestPage|new test data| + +!| scenario | Then the current version can be retrieved | +| check | content from page | TestPage| latest test data| + +!| scenario | Then the new version can be retrieved | +| check | content from page | TestPage| new test data| + +!| scenario | Then the deleted page can't be retrieved | +| check | content from page | TestPage| [Error: Page doesn't exists]| + +!| scenario | Then the history size is | historysize | +|check |history size| @historysize| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ScenarioLibrary/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ScenarioLibrary/properties.xml new file mode 100644 index 0000000..e73a1c3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ScenarioLibrary/properties.xml @@ -0,0 +1,12 @@ + + + true + true + six42 + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/TearDown/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/TearDown/content.txt new file mode 100644 index 0000000..b01d75c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/TearDown/content.txt @@ -0,0 +1,2 @@ +| script | +| clean up | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/TearDown/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/TearDown/properties.xml new file mode 100644 index 0000000..24573f9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/TearDown/properties.xml @@ -0,0 +1,12 @@ + + + true + true + sa + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ZipFileController/SetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ZipFileController/SetUp/content.txt new file mode 100644 index 0000000..f24a954 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ZipFileController/SetUp/content.txt @@ -0,0 +1,11 @@ +| import | +| fitnesse.wiki.fs | + + +!|Library| +| versions controller fixture | fitnesse.wiki.fs.ZipFileVersionsController| + +First, make sure we start with a clean slate. + +| script | +| clean up | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ZipFileController/SetUp/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ZipFileController/SetUp/properties.xml new file mode 100644 index 0000000..e73a1c3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ZipFileController/SetUp/properties.xml @@ -0,0 +1,12 @@ + + + true + true + six42 + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ZipFileController/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ZipFileController/content.txt new file mode 100644 index 0000000..8f44c39 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ZipFileController/content.txt @@ -0,0 +1,10 @@ +The ZIP implementations doesn't creates a backup for new pages +!define Create_backup_for_initial_page_version (0) + +!contents -R2 -g -p -f -h +#!define VERSION_CONTROLLER_CLASS {!-fitnesse.wiki.fs.ZipFileVersionsController-!} +#!define VERSION_CONTROLLER_FIRST_INDEX {0} + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ZipFileController/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ZipFileController/properties.xml new file mode 100644 index 0000000..d9a246e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/ZipFileController/properties.xml @@ -0,0 +1,15 @@ + + + true + true + true + true + true + true + + + BusinessCase.BusinessRequirements + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/content.txt new file mode 100644 index 0000000..0f2e5bf --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/content.txt @@ -0,0 +1,15 @@ +!define TEST_SYSTEM {slim} + +Deal with Versions Controllers and the versions they store + +!* Technical Note + This suite demonstrates the use of [[symbolic links ][.FitNesse.UserGuide.FitNesseWiki.SymbolicLinks]] to test two different implementations against the same requirements. + The requirements must only be written ones! + + The suite also uses variable expressions to handle ambiguity in the different implementations. + +*! + +!define Create_backup_for_initial_page_version (0) + +!contents -R3 -g -p -f -h diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/properties.xml new file mode 100644 index 0000000..3232497 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVersionsControllerTests/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsTestsInclude/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsTestsInclude/content.txt new file mode 100644 index 0000000..02ea787 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsTestsInclude/content.txt @@ -0,0 +1,13 @@ +'''Next create a child''' +|script| +|start|Page Builder| +|line|I came first!| +|attributes|Suite=true,Test=true,Suites=FC1| +|page|!-ParentPage.FirstChild-!| + +'''Next create a sibling''' +|script| +|start|Page Builder| +|line|I'm younger, but wiser| +|attributes|!-WikiImport-!=true,Prune=true,Suites=FC2| +|page|!-ParentPage.SecondChild-!| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsTestsInclude/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsTestsInclude/properties.xml new file mode 100644 index 0000000..0a48d1e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsTestsInclude/properties.xml @@ -0,0 +1,9 @@ + + + + 20081025194722 + + + 1224982042195 + 532420964490787760 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsTestsIncludeWithHelp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsTestsIncludeWithHelp/content.txt new file mode 100644 index 0000000..113ebc9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsTestsIncludeWithHelp/content.txt @@ -0,0 +1,13 @@ +'''Next create a child''' +-|script| +|start|Page Builder| +|line |I came first!| +|attributes |Help=First Child's help| +|page |!-ParentPage.FirstChild-!| + +'''Next create a sibling''' +-|script| +|start|Page Builder| +|line |I'm younger, but wiser| +|attributes |Help=Second Child's help| +|page |!-ParentPage.SecondChild-!| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsTestsIncludeWithHelp/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsTestsIncludeWithHelp/properties.xml new file mode 100644 index 0000000..42fcfd7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsTestsIncludeWithHelp/properties.xml @@ -0,0 +1,10 @@ + + + + + + + + 1224982442282 + 8969296584301579115 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsUsage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsUsage/content.txt new file mode 100644 index 0000000..537b40e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsUsage/content.txt @@ -0,0 +1,16 @@ +Use !contents to list all or some of the child pages of the current page along with additional information such as help text, suite filters, some property settings, and graceful names. Example: + +{{{!contents -R2 -g -p -f -h}}} +Instead of defining arguments on the ''!contents'' widget, variables can be defined that act as global properties. + +-|comment| +|'''argument'''|'''description''' |'''Variable''' | +|-R |Include all of the descendent pages. | | +|!--Rn-! |Include n levels of descendent pages. | | +|-f |Show suite filters. |FILTER_TOC {true} | +|-g |Show graceful names in the list. |REGRACE_TOC {true} | +|-h |Show help property text |HELP_TOC {true} | +|-H |Show help property text as TOC title, and show page name using small letters.|HELP_INSTEAD_OF_TITLE_TOC {true}| +|-p |Show property suffixes. !- +-!Defaults: Suite(*), Test(+), Imported(@), Symbolic(>), Skip(-). | PROPERTY_TOC {true} !- +-!PROPERTY_CHARACTERS {*+@>-}| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsUsage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsUsage/properties.xml new file mode 100644 index 0000000..6acbeab --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ContentsUsage/properties.xml @@ -0,0 +1,8 @@ + + + + + +1201555617074 +8190442723712919484 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SetUp/content.txt new file mode 100644 index 0000000..399a283 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SetUp/content.txt @@ -0,0 +1,6 @@ +!include + + true + true + true + true + true + true + true + true + 1234545813838 + -1749210898043018724 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SetUpLinkTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SetUpLinkTest/content.txt new file mode 100644 index 0000000..1077041 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SetUpLinkTest/content.txt @@ -0,0 +1,5 @@ +!|script| +|given page|ParentPage| +|given page|ParentPage.ChildPage|with content|>SetUp| +|given page|ParentPage.ChildPage.SetUp| +|page|ParentPage.ChildPage|should have link to|ParentPage.ChildPage.SetUp| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SetUpLinkTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SetUpLinkTest/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SetUpLinkTest/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ShouldNotBeAbleToIncludeParentPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ShouldNotBeAbleToIncludeParentPage/content.txt new file mode 100644 index 0000000..582370b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/ShouldNotBeAbleToIncludeParentPage/content.txt @@ -0,0 +1,5 @@ +!|script| +|given page|ParentPage| +|given page|ParentPage.ChildPage|with content|!-!include + +true +true +true +true +true +true + +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SimpleWidgets/DavidHookersBug/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SimpleWidgets/DavidHookersBug/content.txt new file mode 100644 index 0000000..4853052 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SimpleWidgets/DavidHookersBug/content.txt @@ -0,0 +1,12 @@ +{{{From David Hooker: + +In my page, I have the following markup: + +All files received within the ''do...while'' loop will be stored using the +names "reply'''-x'''", where ''x'' is a number corresponding to which pass +through the loop the fixture is taking. + +If I put two single quotes around the letter x (in red above), it starts an +italic section, but the closing two single quotes do not stop the italics, +and the entire rest of my page is itallics. Bold markup does not seem to have +this problem.}}} \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SimpleWidgets/DavidHookersBug/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SimpleWidgets/DavidHookersBug/properties.xml new file mode 100644 index 0000000..7388852 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SimpleWidgets/DavidHookersBug/properties.xml @@ -0,0 +1,14 @@ + + + true + true + 20090111073938 + true + true + true + true + true + true + 1231681178844 + 5795227355115484696 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SimpleWidgets/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SimpleWidgets/content.txt new file mode 100644 index 0000000..e94d570 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SimpleWidgets/content.txt @@ -0,0 +1,38 @@ +!| widget should render | +| wiki text | html text | +| normal text | normal text | +| this is ''italic'' text | this is italic text | italic widget | +| this is '''bold''' text | this is bold text | bold widget | +| !c This is centered text |
This is centered text
| +| !1 header |

header

| +| !2 header |

header

| +| !3 header |

header

| +| !4 header |

header

| +| !5 header |
header
| +| !6 header |
header
| +| http://files/x | http://files/x | file link | +| http://fitnesse.org | http://fitnesse.org | http link | +| SomePage | SomePage\[\?\] | missing wiki word | +| [[tag][WidgetPage]] | tag | link alias | +| [[tag][http://fitnesse.org]] | tag | http link alias | +| [[tag][http://files/x]] | tag | files alias | +| !- !-This is literal text-!-! | This is literal text | simple literal | +| !- !-This is ''literal'' text-! -! | !-This is ''literal'' text-! | literal text with markup | +| !-This is normal, ''italic'', and '''bold''' text-! | This is normal, italic, and bold text | Mixed Italic and Bold | +| !-!note hello-! |

hello

| +| !-{{{prefomatted text}}}-! |
prefomatted text
| +| !-''x''-! | x | ''David Hookers bug. Single character italics didn't parse correctly.'' | +| !---strike---! | strike | +| !-!style_myStyle(hello)-! | hello | +| !-!style_myStyle[hello]-! | hello | +| !-!style_myStyle{hello}-! | hello | +| WikiWord | WikiWord\[\?\] | +| MdM | MdM\[\?\] | +| AbCdEfGhIjKlMnOpQrTuVxYz | AbCdEfGhIjKlMnOpQrTuVxYz\[\?\] | +| TheNumber1 | TheNumber1\[\?\] | +| ParenT.ChilD | ParenT.ChilD\[\?\] | +| ^SubPage | \^SubPage\[\?\] | DEPRECATED | +| >SubPage | >SubPage\[\?\] | +| This is an@email.com text | This is an@email.com text | email widget | + +>DavidHookersBug diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SimpleWidgets/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SimpleWidgets/properties.xml new file mode 100644 index 0000000..2daf979 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/SimpleWidgets/properties.xml @@ -0,0 +1,15 @@ + + + + + + + + + slim + + + + 1233779413308 + -5607632332474131237 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestBackwardsSearchWidget/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestBackwardsSearchWidget/content.txt new file mode 100644 index 0000000..23c3616 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestBackwardsSearchWidget/content.txt @@ -0,0 +1,14 @@ +!2 The Backwards Search widget. +Sometimes we want to search backwards through a path to a named page. For example, if we are on the page !style_code(!-.PageOne.PageTwo.PageThree.PageFour-!) we might be able to say !style_code(!-<PageTwo-!) to search backwards to !style_code(!-PageTwo-!). Now let's say there is a page named !style_code(!-.PageOne.PageTwo.AnotherPage-!) and we are on !style_code(!-.PageOne.PageTwo.PageThree.PageFour-!) We could say !style_code(!-<PageTwo.AnotherPage-!) + +!|script| +|given page|PageOne.PageTwo.AnotherPage| +|| +|given page|PageOne.PageTwo.PageThree.PageFour|with content| + + + 20090326094124 + + + + + 1233786481267 + 3864084191741944938 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestBrokenWikiWordLink/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestBrokenWikiWordLink/content.txt new file mode 100644 index 0000000..f7d262a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestBrokenWikiWordLink/content.txt @@ -0,0 +1,8 @@ +!2 Test the rendering of a broken WikiPageReference. + * A broken WikiPageReference is a reference to a page that does not not exist. + * It should be rendered as a '''[?]'''. The '''[?]''' is a link to the wiki page followed by '''?edit''' +---- +!|script| +|given page|ReferencePage|with content|SomePage| +|it should have creating link to|SomePage| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestBrokenWikiWordLink/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestBrokenWikiWordLink/properties.xml new file mode 100644 index 0000000..575331e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestBrokenWikiWordLink/properties.xml @@ -0,0 +1,10 @@ + + + + 20090204162921 + + + + 1233786561543 + 4684496641888779625 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestClasspathContainingVariable/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestClasspathContainingVariable/content.txt new file mode 100644 index 0000000..6a5e679 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestClasspathContainingVariable/content.txt @@ -0,0 +1,5 @@ +Classpath widgets can cantain variables. The text of !path widgets do not get processed with exception of variable references. + +!|script| +|given page|ClasspathTestPage|with content|!define BASE_PATH {/some/path/}!-
-!!path ${BASE_PATH}blah.jar| +|it should contain|classpath: /some/path/blah.jar| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestClasspathContainingVariable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestClasspathContainingVariable/properties.xml new file mode 100644 index 0000000..14757a4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestClasspathContainingVariable/properties.xml @@ -0,0 +1,10 @@ + + + + 20090204161702 + + + + 1233785822993 + -6227523914168338832 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestClasspathPrecededByDefine/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestClasspathPrecededByDefine/content.txt new file mode 100644 index 0000000..ad2d128 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestClasspathPrecededByDefine/content.txt @@ -0,0 +1,12 @@ +!3 BUG - when you define a classpath entry on a line immediately following a variable definition, the classpath entry is not processed and the fixtures are therefore not found. +---- +First, build a page with variable definitions followed immediately by a classpath definition. Also include a test that should pass. + +!| script | +| given page | ClasspathTestPage | with content | !-!define PI {3.141592} +| fitnesse.testutil.PassFixture |-! | +| make | ClasspathTestPage | a test page | +| its test results should contain | PassFixture | +| and should not contain | Exception | +| check | request page | ErrorLogs.ClasspathTestPage | 200 | +| show | content | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestClasspathPrecededByDefine/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestClasspathPrecededByDefine/properties.xml new file mode 100644 index 0000000..c813571 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestClasspathPrecededByDefine/properties.xml @@ -0,0 +1,9 @@ + + + + + + + 1238173957690 + 4585069183088655392 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestCollapsableSections/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestCollapsableSections/content.txt new file mode 100644 index 0000000..8b995a6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestCollapsableSections/content.txt @@ -0,0 +1,91 @@ +!2 Test Collapsable sections +When a section of wiki test is surrounded by: + * !-!*** ... ***!-! it is rendered as a collapsable section; + * !-!**> ... ***!-! it is rendered as a collapsed section; + * !-!**< ... ***!-! it is rendered as a invisible section; + +The number of stars is optional; at least one is required at the start and end. +The formal format for using this widget involved multiple lines and looks like so: +#--------------------------------------------------- +{{{TOP +!*** section title +content +more content +****************! +BOTTOM +}}} + +and will be rendered as: +TOP +!*** section title +content +more content +****************! +BOTTOM +#--------------------------------------------------- +----- +{{{TOP +!**> section title +content +more content +****************! +BOTTOM +}}} + +and will be rendered as: +TOP +!***> section title +content +more content +****************! +BOTTOM +#--------------------------------------------------- +----- +{{{TOP +!**< section title +content +more content +****************! +BOTTOM +}}} + +and will be rendered as: +TOP +!**< section title +content +more content +****************! +BOTTOM + +!*> Scenarios +!|scenario|given a page with a collapsible section containing|text| +|given page|PageWithCollapsibleSection|with content|!** My Section!-
-!@text!-
-!****!| + +!|scenario|given a page with a collapsed section containing|text| +|given page|PageWithCollapsibleSection|with content|!*> My Section!-
-!@text!-
-!****!| + +!|scenario|given a page with an invisible section containing|text| +|given page|PageWithCollapsibleSection|with content|!*< My Section!-
-!@text!-
-!****!| + +!|scenario|the content|text|should be in a div| +|it should match|
@text(
)?
| + +!|scenario|it should have|text|within a|class|div| +|the content|@text|should be in a div| +|and it should have a collapsible div| + +!|scenario|and it should have a collapsible div| +|and should contain|div class="collapsible| +|and should contain|p class="title">My Section| + +*! + +!|script| +|given a page with a collapsible section containing|line one!-
-!line two| +|it should have|line one!-
-!line two|within a|collapsible|div| +|| +|given a page with a collapsed section containing|line one!-
-!line two| +|it should have|line one!-
-!line two|within a|invisible|div| +|| +|given a page with an invisible section containing|line one!-
-!line two| +|the content|line one!-
-!line two|should be in a div| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestCollapsableSections/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestCollapsableSections/properties.xml new file mode 100644 index 0000000..fb5bea2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestCollapsableSections/properties.xml @@ -0,0 +1,10 @@ + + + + + + + + 1233789810186 + -7128568304062498080 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestComment/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestComment/content.txt new file mode 100644 index 0000000..a41b480 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestComment/content.txt @@ -0,0 +1,6 @@ +!3 This page tests comments on a wiki page. + +!|script| +|given page|CommentTextPage|with content|one!-
-!#two!-
-!three| +|it should contain|one!-
-!three| +|and should not contain|two| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestComment/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestComment/properties.xml new file mode 100644 index 0000000..02949d8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestComment/properties.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + 1233873345782 + 4734847856303348003 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContents/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContents/content.txt new file mode 100644 index 0000000..2100e34 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContents/content.txt @@ -0,0 +1,11 @@ +!3 !-!contents-! + +Ensure the contents widget builds links to child pages. + +!|script| +|given page|ParentPage|with content|!contents| +|given page|ParentPage.FirstChild| +|given page|ParentPage.SecondChild| +|page|ParentPage|should have link to|ParentPage.FirstChild| +|and it should have link to|ParentPage.SecondChild| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContents/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContents/properties.xml new file mode 100644 index 0000000..2e61b8b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContents/properties.xml @@ -0,0 +1,12 @@ + + + + + 20090312121359 + + + + + 1234380940807 + -2763713559722277881 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsFilters/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsFilters/content.txt new file mode 100644 index 0000000..a5fa21e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsFilters/content.txt @@ -0,0 +1,45 @@ +!3 !-!contents-! with Suite Filters Option +!include -seamless ContentsUsage +!3 Explicit Property Option +'''First create the parent page.''' +|script| +|start|Page Builder| +|line|I'm the parent| +|line|!-!contents -f-!| +|page|!-ParentPage-!| + +!include -seamless ContentsTestsInclude + +'''Then request the parent page.''' +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage-!|true|| + +'''...and examine the requested page to be sure that the child pages are included''' +!|Response Examiner.| +|type|pattern|matches?| +|contents|a href="ParentPage.FirstChild"[\s\w="]+>FirstChild \(FC1\)|true| +|contents|a href="ParentPage.SecondChild"[\s\w="]+>SecondChild \(FC2\)|true| + +!3 Indirect via PROPERTY_TOC Variable +'''First create the parent page.''' +|script| +|start|Page Builder| +|line|I'm also the parent| +|line|!-!define FILTER_TOC {true}-!| +|line|!-!contents-!| +|line|!-!define FILTER_TOC {false}-!| +|page|!-ParentPage-!| + +!include -seamless ContentsTestsInclude + +'''Then request the parent page.''' +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage-!|true|| + +'''...and examine the requested page to be sure that the child pages are included''' +!|Response Examiner.| +|type|pattern|matches?| +|contents|a href="ParentPage.FirstChild"[\s\w="]+>FirstChild \(FC1\) + + + 20081025194852 + + + + + 1224982132762 + -2323379029053860621 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsHelp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsHelp/content.txt new file mode 100644 index 0000000..ebd440c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsHelp/content.txt @@ -0,0 +1,71 @@ +!3 !-!contents-! with Help Text Option +!include -seamless ContentsUsage +#------------------------------------------------- +!3 Test Rollover Help +'''First create the parent page.''' +-|script| +|start|Page Builder| +|line|I'm the parent| +|line|!-!contents-!| +|page|!-ParentPage-!| + +!include ContentsTestsIncludeWithHelp + +'''Then request the parent page.''' +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage-!|true|| + +'''...and examine the requested page to insure rollover help text exists''' +!|Response Examiner.| +|type|pattern|matches?| +|contents|a href="ParentPage.FirstChild"[\s\w="]+ title="First Child's help">FirstChildSecondChild: First Child's help: Second Child's help: First Child's help: Second Child's help + + + + + + + + + + + + 1224982407810 + -6939253104715124315 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsHelpInsteadOfTitle/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsHelpInsteadOfTitle/content.txt new file mode 100644 index 0000000..f2efdbb --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsHelpInsteadOfTitle/content.txt @@ -0,0 +1,68 @@ +!3 !-!contents-! with Help Text Option Instead of Title + +!include -seamless ContentsUsage +#------------------------------------------------- +!3 Test Rollover Help +'''First create the parent page.''' +-|script| +|start|Page Builder| +|line|I'm the parent| +|line|!-!contents-!| +|page|!-ParentPage-!| + +!include ContentsTestsIncludeWithHelp + +'''Then request the parent page.''' +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage-!|true|| + +'''...and examine the requested page to insure rollover help text exists''' +!|Response Examiner.| +|type|pattern|matches?| +|contents|a href="ParentPage.FirstChild"[\s\w="]+ title="First Child's help">FirstChildSecondChild + + + + + + + + + +1224982407810 +-6939253104715124315 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsProperties/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsProperties/content.txt new file mode 100644 index 0000000..d6ed69a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsProperties/content.txt @@ -0,0 +1,46 @@ +!3 !-!contents-! with Properties Option +!include -seamless ContentsUsage +!3 Explicit Property Option +'''First create the parent page.''' +|Script| +|start|Page Builder| +|line|I'm the parent| +|line|!-!define PROPERTY_CHARACTERS {ABCDE}-!| +|line|!-!contents -p-!| +|page|!-ParentPage-!| + +!include ContentsTestsInclude + +'''Then request the parent page.''' +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage-!|true|| + +'''...and examine the requested page to be sure that the child pages are included''' +!|Response Examiner.| +|type|pattern|matches?| +|contents|a href="ParentPage.FirstChild" class="suite">FirstChild ABSecondChild CEFirstChild \*\+SecondChild @- + + + 20081025195542 + + + + + 1224982542847 + -6265898487473210936 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsRegraced/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsRegraced/content.txt new file mode 100644 index 0000000..79beec5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsRegraced/content.txt @@ -0,0 +1,45 @@ +!3 !-!contents-! with Graceful option +!include -seamless ContentsUsage +!3 Explicit Graceful Option +'''First create the parent page.''' +|script| +|start|Page Builder| +|line|I'm the parent| +|line|!-!contents -g-!| +|page|!-ParentPage-!| + +!include -seamless ContentsTestsInclude + +'''Then request the parent page.''' +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage-!|true|| + +'''...and examine the requested page to be sure that the child pages are included''' +!|Response Examiner.| +|type|pattern|matches?| +|contents|a href="ParentPage.FirstChild" class="suite">First ChildSecond ChildFirst ChildSecond Child + + + 20081025195650 + + + + + 1224982610036 + -8086447222767895818 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsWithRecursion/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsWithRecursion/content.txt new file mode 100644 index 0000000..5776fbd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestContentsWithRecursion/content.txt @@ -0,0 +1,34 @@ +!3 !-!contents-! with Recursive option +!include -seamless ContentsUsage +'''First create the parent page.''' +|script| +|start|Page Builder| +|line|I'm the parent| +|line|!-!contents-! -R| +|page|!-ParentPage-!| + +!include -seamless ContentsTestsInclude +'''Next create a grandchild''' +|script| +|start|Page Builder| +|line|You're too young to be grandparents| +|page|!-ParentPage.FirstChild.GrandChild-!| + +'''Then request the parent page.''' +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage-!|true|| + +'''...and examine the requested page to be sure that the descendent pages are included''' +# +!|Response Examiner.| +|type|pattern|matches?| +|contents|a href="ParentPage.FirstChild" class="suite">FirstChildGrandChildSecondChild + + + 20081025195831 + + + + 1224982711490 + 7863389155429661458 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestEmailWidget/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestEmailWidget/content.txt new file mode 100644 index 0000000..1cfb756 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestEmailWidget/content.txt @@ -0,0 +1,19 @@ +This page tests bold text on a wiki page. + +First create a page with bold text on it. + +!|Page Creator| +|page name|page contents|page attributes|valid?| +|EmailPage|This is an@email.com text||true| + +Then request that page + +!|Response Requester| +|uri|valid?| +|EmailPage|true| + +Examine the page to be sure it has the bold text + +!|Response Examiner| +|type|pattern|matches?|value| +|contents|This is an@email.com text|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestEmailWidget/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestEmailWidget/properties.xml new file mode 100644 index 0000000..6a67452 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestEmailWidget/properties.xml @@ -0,0 +1,10 @@ + + + + 20081213003859 + + + + 1229150339876 + -5994279846297980652 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestEvaluator/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestEvaluator/content.txt new file mode 100644 index 0000000..c26f6ee --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestEvaluator/content.txt @@ -0,0 +1,328 @@ +!1 Evaluator of expressions: $!--!{= =} +!2 Syntax +'''{{{ $!--!{= [format:] expression =} }}}''' +!3 Expression +An expression may be a combination of constants, variables, and opertors. All internal calculations use the Java ''double'' numeric type. +!3 Format +A format is a specifier that describes the rendering of the numeric result. The format specifier is described by the Java 5 String class's .format() method: +{{{ %[flags][width][.precision]conversion}}} *!note N.B., The ''[argument_index$]'' specifier is not permitted. + +Additionally, a formatting locale can be defined by setting the variable ''FORMAT_LOCALE'' to override the default JVM locale. +!3 Links + * [[format string][http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax]] + * [[String.format()][http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#format(java.util.Locale,%20java.lang.String,%20java.lang.Object...)]] + * [[String class][http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html]] +!3 Examples +{{{ $!--!{= 12 + 23 =} renders (sand brackets) as [35] + $!--!{=%5.4f:1.414=} : [1.4140] + $!--!{=%05X:14+14=} : [0001C] + $!--!{= %-10s : 123 =} : [123 ]}}} + +And when specifying a formatting locale: +{{{ !define FORMAT_LOCALE {fr} + $!--!{=%5.4f:1.414=} : [1,4140]}}} +!3 Operators supported +|Comment |!note Spaces between items are optional | +|'''Operator'''|'''Argument''' |'''Description''' | +|!c ''arg'' |''constant or variable'' |Examples: 3, 12.4, 4E+8, $!--!{VALUE}, $!--!{some.var} | +|!c ''expr'' |!c ''expression'' |Any valid combination of arguments and optional operations and parentheses| +|!c '''+''' |!c ''expr'' + ''expr'' |Addition | +|!c '''-''' |!c -''expr'' |Unary negation | +|!c '''-''' |!c ''expr'' - ''expr'' |Subtraction | +|!c '''!-*-!'''|!c ''expr'' !-*-! ''expr''|Multiplication | +|!c '''/''' |!c ''expr'' / ''expr'' |Division | +|!c '''^''' |!c ''expr'' ^ ''expr'' |Exponentiation | +|!c '''sin''' |!c sin ''expr'' |Radian Sine of ''expr'' | +|!c '''cos''' |!c cos ''expr'' |Radian Cosine of ''expr'' | +|!c '''tan ''' |!c cos ''expr'' |Radian Tangent of ''expr'' | +|!c '''( )''' |!c ( ''expr'' ) |Parenthetical grouping of an expression | +#----------------------------------------------------------------- +----- +!3 Test Blank Expressions +''' Build blank expression page ''' +!|script | +|start|Page Builder | +|line |~1a:${==}~ | +|line |~1b:${= =}~ | +|line |~1c:${= =}~| +|page |ExpressionPage | + +''' Render it ''' +!|Response Requester | +|uri |valid?| +|ExpressionPage|true | + +!**> Contents +!|Response Examiner| +|type |string? | +|contents | | + +!|Response Examiner | +|type |wrapped html?| +|contents| | + +***! + +''' Verify results ''' +!|Response Examiner | +|type |pattern|matches?| +|contents|~1a:~ |true | +|contents|~1b:~ |true | +|contents|~1c:~ |true | + +#----------------------------------------------------------------- +----- +!3 Test Single Argument Expressions +''' Build expression page ''' +!|script | +|start|Page Builder | +|line |!- ~2a:${=3=}~ -! | +|line |!- ~2b:${= 4.2 =}~ -! | +|line |!- ~2c:${= 2E+1 =}~ -! | +|line |!- ~2d:${= 2.3E+42 =}~ -! | +|line |!- ~2e:${= 4.2E + 24 =}~ -!| +|page |ExpressionPage | + +''' Render it ''' +!|Response Requester | +|uri |valid?| +|ExpressionPage|true | + +!**> Contents +!|Response Examiner| +|type |string? | +|contents | | + +!|Response Examiner | +|type |wrapped html?| +|contents| | + +***! + +''' Verify results ''' +!|Response Examiner | +|type |pattern |matches?| +|contents|~2a:3~ |true | +|contents|~2b:4.2~ |true | +|contents|~2c:20~ |true | +|contents|~2d:2.3E+42~|true | +|contents|~2e:4.2E+24~|true | + +#----------------------------------------------------------------- +----- +!3 Test spaces around experssions +''' Build expression page ''' +!|script | +|start|Page Builder | +|line |!- ~3a:${=1+1=}~ -! | +|line |!- ~3b:${=2 + 2=}~ -! | +|line |!- ~3c:${= 3 + 3=}~ -!| +|line |!- ~3d:${=4 + 4 =}~ -!| +|line |!- ~3e:${=5 +5 =}~ -! | +|page |ExpressionPage | + +''' Render it ''' +!|Response Requester | +|uri |valid?| +|ExpressionPage|true | + +!**> Contents +!|Response Examiner| +|type |string? | +|contents | | + +!|Response Examiner | +|type |wrapped html?| +|contents| | + +***! + +''' Verify results ''' +!|Response Examiner | +|type |pattern|matches?| +|contents|~3a:2~ |true | +|contents|~3b:4~ |true | +|contents|~3c:6~ |true | +|contents|~3d:8~ |true | +|contents|~3e:10~|true | + +#----------------------------------------------------------------- +----- +!3 Test each operator +''' Build expression page ''' +!|script | +|start|Page Builder | +|line |!- ~4plus:${= 1 + 2 =}~ -! | +|line |!- ~4minus:${= 2 - 3 =}~ -! | +|line |!- ~4unary:${= -12 =}~ -! | +|line |!- ~4mult:${= 3 * 4 =}~ -! | +|line |!- ~4div:${= 4 / 5 =}~ -! | +|line |!- ~4exp:${=%2d: 5 ^ 6 =}~ -! | +|line |!- ~4sin1:${=%5.4f: sin0.39269875 =}~ -!| +|line |!- ~4sin2:${=%5.4f: sin 0.39269875 =}~ -!| +|line |!- ~4sin3:${=%5.4f: sin(0.39269875) =}~ -!| +|line |!- ~4sin4:${=%5.4f: sin(3.14159/8) =}~ -!| +|line |!- ~4sin5:${=%5.4f: sin (3.14159/8) =}~ -!| +|line |!- ~4cos:${=%5.4f: cos(3.14159 / 8) =}~ -!| +|line |!- ~4tan:${=%5.4f: tan(3.14159 / 8) =}~ -!| +|page |ExpressionPage | + +''' Render it ''' +!|Response Requester | +|uri |valid?| +|ExpressionPage|true | + +!**> Contents +!|Response Examiner| +|type |string? | +|contents | | + +!|Response Examiner | +|type |wrapped html?| +|contents| | + +***! + +''' Verify results ''' +!|Response Examiner | +|type |pattern |matches?| +|contents|~4plus:3~ |true | +|contents|~4minus:-1~ |true | +|contents|~4unary:-12~ |true | +|contents|~4mult:12~ |true | +|contents|~4div:0.8~ |true | +|contents|~4exp:15625~ |true | +|contents|~4sin1:0.3827~|true | +|contents|~4sin2:0.3827~|true | +|contents|~4sin3:0.3827~|true | +|contents|~4sin4:0.3827~|true | +|contents|~4sin5:0.3827~|true | +|contents|~4cos:0.9239~ |true | +|contents|~4tan:0.4142~ |true | + +#----------------------------------------------------------------- +----- +!3 Test parentheses +''' Build expression page ''' +!|script | +|start|Page Builder | +|line |!- ~5a:${= 2 * 3 + 4 / 2 - 3 =}~ -!| +|line |!- ~5b:${= 2 * ( 3 + 4 ) / 2 - 3 =}~ -!| +|line |!- ~5c:${= 2 * ( 3 + 4 ) / ( 2 - 3 ) =}~ -!| +|line |!- ~5d:${= 2 * ( 3 + ( 4 / ( 2 - 3 ) ) ) =}~ -!| +|page |ExpressionPage | + +''' Render it ''' +!|Response Requester | +|uri |valid?| +|ExpressionPage|true | + +!**> Contents +!|Response Examiner| +|type |string? | +|contents | | + +!|Response Examiner | +|type |wrapped html?| +|contents| | + +***! + +''' Verify results ''' +!|Response Examiner | +|type |pattern |matches?| +|contents|~5a:5~ |true | +|contents|~5b:4~ |true | +|contents|~5c:-14~|true | +|contents|~5d:-2~ |true | + +#----------------------------------------------------------------- +----- +!3 Test formatting +''' Build expression page ''' +!|script | +|start|Page Builder | +|line |!- ~6a:${=%d:2 =}~ -!| +|line |!- ~6b:${= %d : 3.2 =}~ -!| +|line |!- ~6c:${=%02d: 2 + 1 =}~ -!| +|line |!- ~6d:${= %4.4f: 2.2 / 3.4 =}~ -!| +|line |!- ~6e:${=%03o: 16 =}~ -!| +|line |!- ~6f:${= %03o : 18 =}~ -!| +|line |!- ~6g:${=%03x: 26 =}~ -!| +|line |!- ~6h:${=%03X: 27 =}~ -!| +|line |!- ~6i:${= %-12s : 123 =}~ -!| +|line |!- ~6j:${=%TY: 73422123127 =}~ -!| +|line |!- ~6k:${=%b: 27 =}~ -!| +|line |!- ~6l:${=%b: 0 =}~ -!| +|line |!- ~6m:${=%B: 27 =}~ -!| +|line |!- ~6n:${=%B: 0 =}~ -!| +|line |!- ~6o:${= % d : 3.2 =}~ -!| +|page |ExpressionPage | + +''' Render it ''' +!|Response Requester | +|uri |valid?| +|ExpressionPage|true | + +!**> Contents +!|Response Examiner| +|type |string? | +|contents | | + +!|Response Examiner | +|type |wrapped html?| +|contents| | + +***! + +''' Verify results ''' +!|Response Examiner | +|type |pattern |matches?| +|contents|~6a:2~ |true | +|contents|~6b:3~ |true | +|contents|~6c:03~ |true | +|contents|~6d:0.6471~ |true | +|contents|~6e:020~ |true | +|contents|~6f:022~ |true | +|contents|~6g:01a~ |true | +|contents|~6h:01B~ |true | +|contents|~6i:123         ~|true | +|contents|~6j:1972~ |true | +|contents|~6k:true~ |true | +|contents|~6l:false~ |true | +|contents|~6m:true~ |true | +|contents|~6n:false~ |true | +|contents|~6o: 3~ |true | + +#----------------------------------------------------------------- +----- +!3 Test formatting with specific locale +''' Build expression page ''' +!|script | +|start|Page Builder | +|line |!-!define FORMAT_LOCALE {fr}-! | +|line |!- ~7a:${= %4.4f: 2.2 / 3.4 =}~ -!| +|page |ExpressionPage | + +''' Render it ''' +!|Response Requester | +|uri |valid?| +|ExpressionPage|true | + +!**> Contents +!|Response Examiner| +|type |string? | +|contents | | + +!|Response Examiner | +|type |wrapped html?| +|contents| | + +***! + +''' Verify results ''' +!|Response Examiner | +|type |pattern |matches?| +|contents|~7a:0,6471~|true | + +#---[EOT]--- diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestEvaluator/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestEvaluator/properties.xml new file mode 100644 index 0000000..74ccf54 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestEvaluator/properties.xml @@ -0,0 +1,9 @@ + + + + + + +1229150806385 +3090056070224906711 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestExistingWikiWordLink/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestExistingWikiWordLink/content.txt new file mode 100644 index 0000000..2edbcac --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestExistingWikiWordLink/content.txt @@ -0,0 +1,65 @@ +!2 Test that ''existing'' WikiPageReference tokens are converted to links. + * A WikiPageReference is said to be ''existing'' if the page to which it refers already exists in the wiki. + * A WikiPageReference can be a simple .FitNesse.SuiteAcceptanceTests.SuiteWidgetTests.WikiWord, or it can be a WikiPagePath. + * A WikiPageReference that begins with a dot ("'''.'''") is taken to be relative to the ''root'' of the wiki. + * A WikiPageReference that does not begin with a dot is taken to be relative to the parent of the current page. +---- +!3 Test simple relative WikiPageReference. + * Create pages at the root level. One page refers to the other. +|Page creator.| +|Page name.|Page contents.|valid?| +|!-SomePage-!|some page|true| +|!-RelativeReferencePage-!|!-SomePage-!|true| + * Then request the page with the reference +|Response Requester.| +|uri|valid?| +|!-RelativeReferencePage-!|true| + * Make sure the rendered page has a link. +|Response Examiner.| +|type|pattern|matches?|value| +|contents|!-SomePage-!|true|| +---- +!3 Test simple global .FitNesse.SuiteAcceptanceTests.SuiteWidgetTests.WikiWord + * Create pages at the root level. One page refers to the other using a global WikiPageReference. +|Page creator.| +|Page name.|Page contents.|valid?| +|!-GlobalReferencePage-!|!-.SomePage-!|true| + * Then request the page with the reference +|Response Requester.| +|uri|valid?| +|!-GlobalReferencePage-!|true| + * Make sure the rendered page has a link. +|Response Examiner.| +|type|pattern|matches?|value| +|contents|!-.SomePage-!|true|| +---- +!3 Test relative WikiPagePath +|Page creator.| +|Page name.|Page contents.|valid?| +|!-SomePage.SubPage-!|!-sub page-!|true| +|!-SomePage.RelativeReference-!|!-SubPage-!|true| + * Then request the page with the reference +|Response Requester.| +|uri|valid?| +|!-SomePage.RelativeReference-!|true| + * Make sure the link is to !-SomePage.SubPage-! +|Response Examiner.| +|type|pattern|matches?|value| +|contents|!-SubPage-!|true|| +---- +!3 Test global WikiPagePath +|Page creator.| +|Page name.|Page contents.|valid?| +|!-SomePage.GlobalReference-!|!-.SomePage.SubPage-!|true| + * Then request the page with the reference +|Response Requester.| +|uri|valid?| +|!-SomePage.GlobalReference-!|true| + * Make sure the link is to !-SomePage.SubPage-! +|Response Examiner.| +|type|pattern|matches?|value| +|contents|!-.SomePage.SubPage-!|true|| + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestExistingWikiWordLink/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestExistingWikiWordLink/properties.xml new file mode 100644 index 0000000..603c129 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestExistingWikiWordLink/properties.xml @@ -0,0 +1,8 @@ + + + + 20081020135123 + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestExpression/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestExpression/content.txt new file mode 100644 index 0000000..ee885ab --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestExpression/content.txt @@ -0,0 +1,223 @@ +!1 Expressions using the ${= =} mark up +!3 Syntax: +'''{{{ $!--!{= expression =} }}}''' + +An expression may be a combination of constants, variables, and opertors. All internal calculations use the Java ''double'' numeric type. + +!3 Operators supported +|Comment |!note Spaces between items are optional | +|'''Operator'''|'''Argument''' |'''Description''' | +|!c ''arg'' |''constant or variable'' |Examples: 3 12.4 4E+8 $!--!{VALUE} $!--!{some.var} | +|!c ''expr'' |!c ''expression'' |Any valid combination of arguments and optional operations and parentheses| +|!c '''+''' |!c ''expr'' + ''expr'' |Addition | +|!c '''-''' |!c -''expr'' |Unary negation | +|!c '''-''' |!c ''expr'' - ''expr'' |Subtraction | +|!c '''!-*-!'''|!c ''expr'' !-*-! ''expr''|Multiplication | +|!c '''/''' |!c ''expr'' / ''expr'' |Division | +|!c '''^''' |!c ''expr'' ^ ''expr'' |Exponentiation | +|!c '''sin''' |!c sin ''expr'' |Radian Sine of ''expr'' | +|!c '''cos''' |!c cos ''expr'' |Radian Cosine of ''expr'' | +|!c '''tan ''' |!c cos ''expr'' |Radian Tangent of ''expr'' | +|!c '''( )''' |!c ( ''expr'' ) |Parenthetical grouping of an expression | +#----------------------------------------------------------------- +----- +!3 Test Blank Expressions +''' Build blank expression page ''' +!|script| +|start|Page Builder | +|line|!- ~1a:${==}~ -!| +|line|!- ~1b:${= =}~ -!| +|line|!- ~1c:${= =}~ -!| +|page|ExpressionPage | + +''' Render it ''' +!|Response Requester| +|uri |valid?| +|ExpressionPage|true | + +!**> Contents +!|Response Examiner| +|type |string?| +|contents| | + +!|Response Examiner| +|type |wrapped html?| +|contents| | + +***! + +''' Verify results ''' +!|Response Examiner| +|type |pattern|matches?| +|contents|~1a:~ |true | +|contents|~1b:~ |true | +|contents|~1c:~ |true | + +----- +!3 Test Single Argument Expressions +''' Build expression page ''' +!|script| +|start|Page Builder | +|line|!- ~2a:${=3=}~ -! | +|line|!- ~2b:${= 4.2 =}~ -! | +|line|!- ~2c:${= 2E+1 =}~ -! | +|line|!- ~2d:${= 2.3E+42 =}~ -! | +|line|!- ~2e:${= 4.2E + 24 =}~ -!| +|page|ExpressionPage | + +''' Render it ''' +!|Response Requester| +|uri |valid?| +|ExpressionPage|true | + +!**> Contents +!|Response Examiner| +|type |string?| +|contents| | + +!|Response Examiner| +|type |wrapped html?| +|contents| | + +***! + +''' Verify results ''' +!|Response Examiner| +|type |pattern |matches?| +|contents|~2a:3~ |true | +|contents|~2b:4.2~ |true | +|contents|~2c:20~ |true | +|contents|~2d:2.3E+42~|true | +|contents|~2e:4.2E+24~|true | + +#----------------------------------------------------------------- +----- +!3 Test spaces around experssions +''' Build expression page ''' +!|script| +|start|Page Builder | +|line|!- ~3a:${=1+1=}~ -! | +|line|!- ~3b:${=2 + 2=}~ -! | +|line|!- ~3c:${= 3 + 3=}~ -!| +|line|!- ~3d:${=4 + 4 =}~ -!| +|line|!- ~3e:${=5 +5 =}~ -! | +|page|ExpressionPage | + +''' Render it ''' +!|Response Requester| +|uri |valid?| +|ExpressionPage|true | + +!**> Contents +!|Response Examiner| +|type |string?| +|contents| | + +!|Response Examiner| +|type |wrapped html?| +|contents| | + +***! + +''' Verify results ''' +!|Response Examiner| +|type |pattern|matches?| +|contents|~3a:2~ |true | +|contents|~3b:4~ |true | +|contents|~3c:6~ |true | +|contents|~3d:8~ |true | +|contents|~3e:10~|true | + +#----------------------------------------------------------------- +----- +!3 Test each operator +''' Build expression page ''' +!|script| +|start|Page Builder | +|line|!- ~4plus:${= 1 + 2 =}~ -! | +|line|!- ~4minus:${= 2 - 3 =}~ -! | +|line|!- ~4unary:${= -12 =}~ -! | +|line|!- ~4mult:${= 3 * 4 =}~ -! | +|line|!- ~4div:${= 4 / 5 =}~ -! | +|line|!- ~4exp:${=%2d: 5 ^ 6 =}~ -! | +|line|!- ~4sin1:${=%5.4f: sin0.39269875 =}~ -!| +|line|!- ~4sin2:${=%5.4f: sin 0.39269875 =}~ -!| +|line|!- ~4sin3:${=%5.4f: sin(0.39269875) =}~ -!| +|line|!- ~4sin4:${=%5.4f: sin(3.14159/8) =}~ -!| +|line|!- ~4sin5:${=%5.4f: sin (3.14159/8) =}~ -!| +|line|!- ~4cos:${=%5.4f: cos(3.14159 / 8) =}~ -!| +|line|!- ~4tan:${=%5.4f: tan(3.14159 / 8) =}~ -!| +|page|ExpressionPage | + +''' Render it ''' +!|Response Requester| +|uri |valid?| +|ExpressionPage|true | + +!**> Contents +!|Response Examiner| +|type |string?| +|contents| | + +!|Response Examiner| +|type |wrapped html?| +|contents| | + +***! + +''' Verify results ''' +!|Response Examiner| +|type |pattern |matches?| +|contents|~4plus:3~ |true | +|contents|~4minus:-1~ |true | +|contents|~4unary:-12~ |true | +|contents|~4mult:12~ |true | +|contents|~4div:0.8~ |true | +|contents|~4exp:15625~ |true | +|contents|~4sin1:0.3827~|true | +|contents|~4sin2:0.3827~|true | +|contents|~4sin3:0.3827~|true | +|contents|~4sin4:0.3827~|true | +|contents|~4sin5:0.3827~|true | +|contents|~4cos:0.9239~ |true | +|contents|~4tan:0.4142~ |true | + +#----------------------------------------------------------------- +----- +!3 Test parentheses +''' Build expression page ''' +!|script| +|start|Page Builder | +|line|!- ~5a:${= 2 * 3 + 4 / 2 - 3 =}~ -!| +|line|!- ~5b:${= 2 * ( 3 + 4 ) / 2 - 3 =}~ -!| +|line|!- ~5c:${= 2 * ( 3 + 4 ) / ( 2 - 3 ) =}~ -!| +|line|!- ~5d:${= 2 * ( 3 + ( 4 / ( 2 - 3 ) ) ) =}~ -!| +|page|ExpressionPage | + +''' Render it ''' +!|Response Requester| +|uri |valid?| +|ExpressionPage|true | + +!**> Contents +!|Response Examiner| +|type |string?| +|contents| | + +!|Response Examiner| +|type |wrapped html?| +|contents| | + +***! + +''' Verify results ''' +!|Response Examiner| +|type |pattern |matches?| +|contents|~5a:5~ |true | +|contents|~5b:4~ |true | +|contents|~5c:-14~|true | +|contents|~5d:-2~ |true | + +#----------------------------------------------------------------- +#----------------------------------------------------------------- +#----------------------------------------------------------------- diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestExpression/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestExpression/properties.xml new file mode 100644 index 0000000..fea0c94 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestExpression/properties.xml @@ -0,0 +1,11 @@ + + + + 20090204155209 + + + + + 1233784329733 + -8383620453588142810 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestGtSubPageWidget/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestGtSubPageWidget/content.txt new file mode 100644 index 0000000..edfc12c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestGtSubPageWidget/content.txt @@ -0,0 +1,32 @@ +!2 The GT Sub Page widget. +!note We are in the process of deprecating the ^ widget and replacing it with >. This test proves that the > widget works. + +Sometimes we want to conveniently create a link to a sub page. We could do this by using the syntax ''!-SuperPage.SubPage-!'', but this is inconvenient. Instead we want to be able to say ''!->SubPage-!''. + +!|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|SuperPage|>SubPage||true| + +!|Response Requester.| +|uri|valid?|contents?| +|SuperPage|true|| + +The widget should translate into a ? link of the form: + * ''!->SubPage-![?]'' +!|Response Examiner.| +|type |pattern|matches?|value| +|contents|>SubPage\[\?\]|true|| + +If the sub page is already present, then the widget should translate into a normal link. + +!|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|SuperPage.SubPage|nothing||true| + +!|Response Requester.| +|uri|valid?|contents?| +|SuperPage|true|| + +!|Response Examiner.| +|type |pattern|matches?|value| +|contents|>SubPage|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestGtSubPageWidget/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestGtSubPageWidget/properties.xml new file mode 100644 index 0000000..952acab --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestGtSubPageWidget/properties.xml @@ -0,0 +1,11 @@ + + + + 20081213004747 + + + + + 1229150867919 + -7497153667046787360 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestGtSubPageWidgetInAlias/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestGtSubPageWidgetInAlias/content.txt new file mode 100644 index 0000000..6d8f24a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestGtSubPageWidgetInAlias/content.txt @@ -0,0 +1,33 @@ +!2 The Sub Page widget in an alias. + +!note we are deprecating the ^ syntax in favor of the > syntax. + +Sometimes we want to create an alias to a subpage link as follows: !-[[click here][>SubPage]]-!. + +!|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|SuperPage|[[tag][>SubPage]]||true| + +!|Response Requester.| +|uri|valid?|contents?| +|SuperPage|true|| + +The widget should translate into a ? link of the form: + * ''tag[?]'' +!|Response Examiner.| +|type |pattern|matches?|value| +|contents|tag\[\?\]|true|| + +If the sub page is already present, then the widget should translate into a normal link. + +!|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|SuperPage.SubPage|nothing||true| + +!|Response Requester.| +|uri|valid?|contents?| +|SuperPage|true|| + +!|Response Examiner.| +|type |pattern|matches?|value| +|contents|tag|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestGtSubPageWidgetInAlias/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestGtSubPageWidgetInAlias/properties.xml new file mode 100644 index 0000000..83d0df1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestGtSubPageWidgetInAlias/properties.xml @@ -0,0 +1,11 @@ + + + + 20081213004831 + + + + + 1229150911604 + -788386058501389389 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHash/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHash/content.txt new file mode 100644 index 0000000..857866b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHash/content.txt @@ -0,0 +1,15 @@ +!|script| +|given page|HashPage|with content|!-!{a:b}-!| +|it should match|.table class="hash_table"| +|it should match|tr class="hash_row"| +|it should match|td class="hash_key"| +|it should match|td class="hash_value"| + +|Response Examiner| +|wrapped html?| +|| + +!|script| +|given page|HashPageTwo|with content|!-!{a:b,c:d}-!| +|it should match|.tr class="hash_row">.*td class="hash_key">.*a.*/td>.*td class="hash_value">.*b.*/td>.*/tr>| +|it should match|.tr class="hash_row">.*td class="hash_key">.*c.*/td>.*td class="hash_value">.*d.*/td>.*/tr>| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHash/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHash/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHash/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHelp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHelp/content.txt new file mode 100644 index 0000000..2443d98 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHelp/content.txt @@ -0,0 +1,21 @@ +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-HelpTestPage-!| !-some content !help-! | Help= Sample help string|true| +|!-HelpTestPage2-!| !-some content !help -editable-! | |true| + +|Response Requester.| +|uri|valid?| +|!-HelpTestPage-!|true| + +|Response Examiner.| +|type|pattern|matches?|value| +|contents| Sample help string |true|| +|contents| (edit help text) |false|| + +|Response Requester.| +|uri|valid?| +|!-HelpTestPage2-!|true| + +|Response Examiner.| +|type|pattern|matches?|value| +|contents| (edit help text) |true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHelp/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHelp/properties.xml new file mode 100644 index 0000000..3e87512 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHelp/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHttpLinkWithVariable/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHttpLinkWithVariable/content.txt new file mode 100644 index 0000000..1076162 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHttpLinkWithVariable/content.txt @@ -0,0 +1,20 @@ +!2 Test that HTTP links are rendered correctly +If a string of the form !-http://-!''some_url'' appears in wiki text, it is converted to a link. +---- +!3 Check the variables get rendered in links + * First create a page with a variable and http link on it. +!|script| +|start|Page Builder| +|line|!define HOST {localhost:8081}| +|line|http://${HOST}/page|| +|page|!-HttpLinkPage-!| + + * Then fetch the page. +|Response Requester.| +|uri|valid?| +|!-HttpLinkPage-!|true| + + * Then check that the link was properly rendered. +|Response Examiner.| +|type|pattern|matches?|value| +|contents|!-http://localhost:8081/page-!|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHttpLinkWithVariable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHttpLinkWithVariable/properties.xml new file mode 100644 index 0000000..4ce9ce4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHttpLinkWithVariable/properties.xml @@ -0,0 +1,10 @@ + + + + 20081028013208 + + + + 1225175528935 + -3752958530354414031 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHttpStatus/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHttpStatus/content.txt new file mode 100644 index 0000000..95108d0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHttpStatus/content.txt @@ -0,0 +1,23 @@ +Test that the http status entries returned in a wiki page are correct. + +First create a page with normal text on it. + +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-NormalTextPage-!|This is normal text||true| + +Then request that page + +|Response Requester.| +|uri|valid?| +|!-NormalTextPage-!|true| + +Examine the response for its status. + +|Response Examiner.| +|type|pattern|matches?|value| +|status|200|true|| +|headers|Cache-Control: max-age=0|true|| + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHttpStatus/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHttpStatus/properties.xml new file mode 100644 index 0000000..abb3da8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestHttpStatus/properties.xml @@ -0,0 +1,9 @@ + + + + 20071130010014 + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestImage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestImage/content.txt new file mode 100644 index 0000000..346cf78 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestImage/content.txt @@ -0,0 +1,41 @@ +!3 This page tests the inclusion of images. +# + * First create a page with a set of images in it. +# +|script| +|start|Page Builder| +|line|!-!img name-!| +|line|!-!img-l name-!| +|line|!-!img-r name-!| +|line|!-!img -w 512 name-!| +|line|!-Image should be inline !img name with the text-!| +|line|!-!img-l -w 200 name-!| +|line|!-!img-r -w 150 name-!| +|line|!-!img -m 5 -b 1 name-!| +|line|!-!img-r -w 640 -m 10 -b 2 url-!| +|page|!-ImagePage-!| +# + * Then request that page +# +|Response Requester.| +|uri|valid?|contents?| +|!-ImagePage-!|true|| +# + * Make sure the html is correct for the images included. +# +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|a|true|| + +|Response Examiner.| +|type|number|string?| +|line|1|!-<img src="name"/>-!| +|line|2|!-<img src="name" class="left"/>-!| +|line|3|!-<img src="name" class="right"/>-!| +|line|4|!-<img src="name" width="512"/>-!| +|line|5|!-Image should be inline <img src="name"/> with the text-!| +|line|6|!-<img src="name" class="left" width="200"/>-!| +|line|7|!-<img src="name" class="right" width="150"/>-!| +|line|8|!-<img src="name" style="border:1px solid black;margin:5px 5px 5px 5px;"/>-!| +|line|9|!-<img src="url" class="right" width="640" style="border:2px solid black;margin:10px 10px 10px 10px;"/>-!| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestImage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestImage/properties.xml new file mode 100644 index 0000000..089d22d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestImage/properties.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestInclude/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestInclude/content.txt new file mode 100644 index 0000000..5a8a536 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestInclude/content.txt @@ -0,0 +1,41 @@ +!3 This page tests includes on a wiki page. +When a !include is the first string on a line in a wiki page, then the argument of the !include is presumed to be another wiki page. The contents of that wiki page are inserted in place of the !include. + +The following is a test that demonstrates how this works. +# + * First create a page to be included. +# +|script| +|start|Page Builder| +|line|included| +|page|!-IncludedPage-!| +# + * Next create a page to do the including. +# +|script| +|start|Page Builder| +|line|before| +|line|&bang;include !-IncludedPage-! | +|line|after| +|page|!-IncludingPage-!| +# + * Then request the including page. +# +|Response Requester.| +|uri|valid?|contents?| +|!-IncludingPage-!|true|| +# + * Examine the requested page to be sure the included page was in fact included. +# +|Response Examiner.| +|type|pattern|matches?|value| +|contents|included|true|| +# + * Now look at every line on the including page to make sure that the inclusions were done in order. +# +|Response Examiner.| +|line|occurs after?| +|before|true| +|included|true| +|after|true| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestInclude/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestInclude/properties.xml new file mode 100644 index 0000000..d1a42e4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestInclude/properties.xml @@ -0,0 +1,11 @@ + + + + 20081025203702 + + + + + 1224985022046 + -1624419353663413223 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeBackwardsSearchPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeBackwardsSearchPage/content.txt new file mode 100644 index 0000000..eccf339 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeBackwardsSearchPage/content.txt @@ -0,0 +1,33 @@ +!3 This page tests includes of a backwards search page. + +Make sure the !-!include + + + + + +1224985098949 +1988325188839757829 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeCollapsed/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeCollapsed/content.txt new file mode 100644 index 0000000..b871c17 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeCollapsed/content.txt @@ -0,0 +1,36 @@ +!3 You can set an included page to be collapsed when the page is rendered. +To do this, add the option "-c": + +!-!include -c SomePage-! + +See TestInclude for more info on included pages. +---- +# + * First create a page to be included. +# +|script| +|start|Page Builder| +|line|included| +|page|!-IncludedPage-!| +# + * Next create a page to do the including. +# +|script| +|start|Page Builder| +|line|before| +|line|!-&bang;include -c IncludedPage-! | +|line|after| +|page|!-IncludingPage-!| +# + * Then request the including page. +# +|Response Requester.| +|uri|valid?|contents?| +|!-IncludingPage-!|true|| +# + * Now make sure the page was included and that the correct style and image are used. +# +|Response Examiner.| +|type|pattern|matches?| +|contents|included|true| +|contents|class="collapsible closed"|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeCollapsed/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeCollapsed/properties.xml new file mode 100644 index 0000000..395161e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeCollapsed/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + 1224985151218 + 1162019334740908922 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeIsCollapsable/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeIsCollapsable/content.txt new file mode 100644 index 0000000..e2984be --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeIsCollapsable/content.txt @@ -0,0 +1,32 @@ +!3 Included Pages are Collapsable +When a page is included it is included within a division that is collapsable. + +The following is a test that demonstrates how this works. +# + * First create a page to be included. +# +|script| +|start|Page Builder| +|line|included| +|page|!-IncludedPage-!| +# + * Next create a page to do the including. +# +|script| +|start|Page Builder| +|line|before| +|line|!-&bang;include IncludedPage-! | +|line|after| +|page|!-IncludingPage-!| +# + * Then request the including page. +# +|Response Requester.| +|uri|valid?|contents?| +|!-IncludingPage-!|true|| +# + * Examine the requested page to be sure the included page was in fact included. +# +|Response Examiner.| +|type|pattern|matches?|value| +|contents|class="collapsible"|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeIsCollapsable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeIsCollapsable/properties.xml new file mode 100644 index 0000000..c1f61e1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeIsCollapsable/properties.xml @@ -0,0 +1,10 @@ + + + + + + + + 1224985202193 + -5717088232592493606 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSeamless/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSeamless/content.txt new file mode 100644 index 0000000..370f0b1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSeamless/content.txt @@ -0,0 +1,45 @@ +!3 This page tests seamless includes on a wiki page. + +'''NOTE - this is not part of the 20050301 release, but is checked in and will be part of the next release''' + +You can follow !include (see TestInclude) with the option "!--seamless-!", which renders the included comment with no additional decoration. + +The following is a test that demonstrates how this works. +# + * First create a page to be included. +# +|script| +|start|Page Builder| +|line|included line 1| +|line|included line 2| +|page|!-IncludedPage-!| +# + * Next create a page to do the including. +# +|script| +|start|Page Builder| +|line|before| +|line|!-&bang;include -seamless IncludedPage-! | +|line|after| +|page|!-IncludingPage-!| +# + * Then request the including page. +# +|Response Requester.| +|uri|valid?|contents?| +|!-IncludingPage-!|true|| +# + * Examine the requested page to be sure the included page was in fact included. +# +|Response Examiner.| +|type|pattern|matches?|value| +|contents|included|true|| +# + * Now look at every line on the including page to make sure that the inclusions were done in order. +# +|Response Examiner.| +|type|number|string?| +|line|1|before| +|line|2|included line 1| +|line|3|included line 2| +|line|4|after| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSeamless/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSeamless/properties.xml new file mode 100644 index 0000000..591ca95 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSeamless/properties.xml @@ -0,0 +1,10 @@ + + + + 20081025204051 + + + + 1224985251533 + 6002595183983437420 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSetUpTearDownWithPageName/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSetUpTearDownWithPageName/content.txt new file mode 100644 index 0000000..a330531 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSetUpTearDownWithPageName/content.txt @@ -0,0 +1,17 @@ +!*< test page content definition +!define pageContent (!include -setup SetUp +!include IncludedPage +Including page name is !-${PAGE_NAME}-! +!include -teardown TearDown) + +*! + +!|script| +|create page|SetUp|with content|Set Up page name is !-${PAGE_NAME}-!| +|create page|TearDown|with content|Tear Down page name is !-${PAGE_NAME}-!| +|create page|IncludedPage|with content|Included page name is !-${PAGE_NAME}-!| +|given page|IncludingPage|with content|${pageContent}| +|it should contain|Included page name is IncludedPage| +|it should contain|Including page name is IncludingPage| +|it should contain|Set Up page name is IncludingPage| +|it should contain|Tear Down page name is IncludingPage| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSetUpTearDownWithPageName/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSetUpTearDownWithPageName/properties.xml new file mode 100644 index 0000000..e0d6ece --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSetUpTearDownWithPageName/properties.xml @@ -0,0 +1,15 @@ + + + true + true + 20090319152813 + true + true + true + true + true + true + true + 1237470268676 + -6178655714902395693 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSubPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSubPage/content.txt new file mode 100644 index 0000000..469fbe6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSubPage/content.txt @@ -0,0 +1,32 @@ +!3 This page tests includes of a sub page. + +Make sure the !-!include >MySubPage-! syntax works. +# + * First create a page to be included. +# +|script| +|start|Page Builder| +|line|this subpage was included 3.14159| +|page|!-IncludingPage.IncludedPage-!| +# + * Next create a page to do the including. +# +|script| +|start|Page Builder| +|line|before| +|line|!-&bang;include >IncludedPage-! | +|line|after| +|page|!-IncludingPage-!| +# + * Then request the including page. +# +|Response Requester.| +|uri|valid?|contents?| +|!-IncludingPage-!|true|| +# + * Examine the requested page to be sure the included page was in fact included. +# +|Response Examiner.| +|type|pattern|matches?|value| +|contents|this subpage was included 3.14159|true|| +# diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSubPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSubPage/properties.xml new file mode 100644 index 0000000..b9824dc --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestIncludeSubPage/properties.xml @@ -0,0 +1,11 @@ + + + + 20081025204138 + + + + + 1224985298639 + -7592481394649690785 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestLineBreak/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestLineBreak/content.txt new file mode 100644 index 0000000..665bac3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestLineBreak/content.txt @@ -0,0 +1,30 @@ +!3 This page tests line breaks. +# + * First create a page with line breaks in it. +# +|script| +|start|Page Builder| +|line|one| +|line|| +|line|two| +|page|!-LineBreakPage-!| +# + * Then request that page +# +|Response Requester.| +|uri|valid?|contents?| +|!-LineBreakPage-!|true|| +# + * Make sure the page has three line breaks. +# +|Response Examiner.| +|type|pattern|matches?|value| +|contents|one.*
.*
.*two.*
.*|true|| + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestLineBreak/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestLineBreak/properties.xml new file mode 100644 index 0000000..1ea45d9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestLineBreak/properties.xml @@ -0,0 +1,10 @@ + + + + 20081026072729 + + + + 1225024049237 + -7002969980886143726 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestLinkAlias/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestLinkAlias/content.txt new file mode 100644 index 0000000..cce71d4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestLinkAlias/content.txt @@ -0,0 +1,143 @@ +!2 Test the Link Alias syntax. +Aliases to links can be created using the !-[[tag][link]]-! syntax. +The tag is interpreted for markup syntax, so it can be italic, or bold, or an image, etc. The link can be a relative or global wiki word, or it can be an http link. + +---- +!3 Test relative link alias + * First create two sub pages. One has a relative link to the other. +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-SomePage.TargetPage-!|target page||true| +|!-SomePage.LinkPage-!|!-[[tag][TargetPage]]-!||true| + * Then get the page with the relative link on it. +|Response Requester.| +|uri|valid?| +|!-SomePage.LinkPage-!|true| + * Then make sure the relative link is properly constructed. +|Response Examiner.| +|type|pattern|matches?|value| +|contents|
tag|true|| +---- +!3 Test global link alias + * First create a sub page that has a global reference to another sub page. +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-SomePage.GlobalLinkPage-!|!-[[tag][.SomePage.TargetPage]]-!||true| + * Then fetch that page. +|Response Requester.| +|uri|valid?| +|!-SomePage.GlobalLinkPage-!|true| + * Make sure the link is properly formed. +|Response Examiner.| +|type|pattern|matches?|value| +|contents|tag|true|| +---- +!3 Test variables get rendered in http link alias + * First create a page with a variable and http link on it. +!|script| +|start|Page Builder| +|line|&bang;define HOST {localhost:8080}| +|line|!-[[tag][http://${HOST}/page]]-! works fine.| +|page|!-HttpLinkPage-!| + + * Fetch the page. +|Response Requester.| +|uri|valid?| +|!-HttpLinkPage-!|true| + * Make sure the link is properly constructed. +|Response Examiner.| +|type|pattern|matches?|value| +|contents|tag works fine.|true|| +---- +!3 Test variables defined in parent page get rendered in http link alias on child pages + * First define parent page with variable definition and child page with a http link which uses the variable. +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-SomePage.ParentPage-!|!-!define HOST {localhost:8080}-!||true| +|!-SomePage.ParentPage.ChildPage-!|!-[[tag][http://${HOST}/page]]-! works fine.||true| + + * Fetch the page. +|Response Requester.| +|uri|valid?| +|!-SomePage.ParentPage.ChildPage-!|true| + + * Make sure the link is properly constructed. +|Response Examiner.| +|type|pattern|matches?|value| +|contents|tag works fine.|true|| +----- +!3 Test expressions without variables in link alias + * Create pages to refer to +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-PageLink2-!|contents||true| +|!-PageLink4-!|contents||true| +|!-PageLink10-!|contents||true| + + * First create a page with a variables and http link on it. +|script| +|start|Page Builder| +|line|!-!define X {5}-!| +|line|!-!define Y (4)-!| +|line|!-!define EXPR (${=3+2-1=})-!| +|line|!-[[tag][PageLink${= 3 - 2 + 1 =}]]-! works fine.| +|line|!-[[tag][PageLink${EXPR}]]-! works too.| +|line|!-[[tag][PageLink${=${X}+${Y}+1=}]]-! works as well.| +|page|!-HttpExprPage-!| + + * Fetch the page. +|Response Requester.| +|uri|valid?|contents?| +|!-HttpExprPage-!|true|| + + * Make sure the link is properly constructed. +|Response Examiner.| +|type|pattern|matches?| +|contents|tag works fine.|true| +|contents|tag works too.|true| +|contents|tag works as well.|true| + +!3 Test that links with query strings and fragments are handled properly. + * Create a page hierarchy +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-QueryPageRoot-! |!-!anchor QPLabel -!||true| +|!-QueryPageRoot.TopPage-! |!-!anchor QPTopLabel-!||true| + + * Create a page of query and fragment links...and a child +|script| +|start|Page Builder| +|line|!-[[tag1 ][TopPage?edit]]-! has query.| +|line|!-[[tag2 ][TopPage?edit#QPTopLabel]]-! has query and frag.| +|line|!-[[tag3 ][TopPage#QPTopLabel]]-! has fragment.| +|line|!-[[tag4 ][ChildFrag?edit]]-! child has query.| +|line|!-[[tag9 ][>ChildFrag?edit#QPTopLabel]]-! child has query and frag.| +|line|!-[[tag10][>ChildFrag#QPTopLabel]]-! child has fragment.| +|page|!-QueryPageRoot.QueryFragmentLinks-!| + +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-QueryPageRoot.QueryFragmentLinks.ChildFrag-!|!-!anchor QPChild-!||true| + + * Fetch the page. +|Response Requester.| +|uri|valid?|contents?| +|!-QueryPageRoot.QueryFragmentLinks-!|true|| + + * Make sure the query and fragments don't interfere with page paths. +|Response Examiner.| +|type|pattern|matches?| +|contents|tag1 has query.|true| +|contents|tag2 has query and frag.|true| +|contents|tag3 has fragment.|true| +|contents|tag4 back has query.|true| +|contents|tag5 root has query.|true| +|contents|tag6 back has query and frag.|true| +|contents|tag7 back has fragment.|true| +|contents|tag8 child has query.|true| +|contents|tag9 child has query and frag.|true| +|contents|tag10 child has fragment.|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestLinkAlias/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestLinkAlias/properties.xml new file mode 100644 index 0000000..93238f6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestLinkAlias/properties.xml @@ -0,0 +1,10 @@ + + + + 20090111072849 + + + + 1231680529753 + -2612781470226117311 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestMultiLineTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestMultiLineTable/content.txt new file mode 100644 index 0000000..ede1dd2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestMultiLineTable/content.txt @@ -0,0 +1,41 @@ +!3 This page tests a multi-line table. +A multi-line table is created as follows {{{|a|b|c| +|d|e|f|}}} The resulting text will be rendered in a one line table of the form.{{{ + + +
abc
def
}}} +# + * First create a page with a simple table in it. +# +|script| +|start|Page Builder| +|line|!-|a|b|c|-!| +|line|!-|d|e|f|-!| +|page|!-MultiLineTablePage-!| +# + * Then request that page +# +|Response Requester.| +|uri|valid?|contents?| +|!-MultiLineTablePage-!|true|| +# + * Make sure the html is correct for a simple table. +# +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|a|true|| + +|Response Examiner.| +|type|number|string?| +|line|1|!-<table>-!| +|line|2|!-<tr>-!| +|line|3|!-<td>a</td>-!| +|line|4|!-<td>b</td>-!| +|line|5|!-<td>c</td>-!| +|line|6|!-</tr>-!| +|line|7|!-<tr>-!| +|line|8|!-<td>d</td>-!| +|line|9|!-<td>e</td>-!| +|line|10|!-<td>f</td>-!| +|line|11|!-</tr>-!| +|line|12|!-</table>-!| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestMultiLineTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestMultiLineTable/properties.xml new file mode 100644 index 0000000..7a63ce6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestMultiLineTable/properties.xml @@ -0,0 +1,10 @@ + + + + 20090204154027 + + + + 1233783627144 + 6262768124281368712 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestNormalListWithLeadingNumbers/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestNormalListWithLeadingNumbers/content.txt new file mode 100644 index 0000000..d7d865a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestNormalListWithLeadingNumbers/content.txt @@ -0,0 +1,30 @@ +!3 Normal lists with leading numbers +An old bug in Fitnesse. If you created a normal list with leading numbers in the text, the parser got confused and thought that the leading numbers were part of a numeric list. + +A list created as follows {{{* 50 ways to leave your lover}}} should be rendered as a normal list with "50 ways to leave your lover" as the text of the list. +# + * First create a page with a simple table in it. +# +!note We use \ here as a way to capture the leading space before the *. +!|script| +|start|Page Builder| +|line|\ * 50 ways to leave your lover.| +|page|NormalListWithLeadingNumericPage| +# + * Then request that page +# +!|Response Requester.| +|uri|valid?|contents?| +|NormalListWithLeadingNumericPage|true|| +# + * Make sure the html is correct for a simple table. +# +!|Response Examiner.| +|type|pattern|matches?|value| +|contents|
  • 50 ways to leave your lover.
  • |true|| + +!|Response Examiner.| +|type|number|string?| +|line|1|
      | +|line|2|
    • 50 ways to leave your lover.
    • | +|line|3|
    | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestNormalListWithLeadingNumbers/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestNormalListWithLeadingNumbers/properties.xml new file mode 100644 index 0000000..f63fecb --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestNormalListWithLeadingNumbers/properties.xml @@ -0,0 +1,10 @@ + + + + 20081026080117 + + + + 1225026077500 + -475629030298269946 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestNumericList/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestNumericList/content.txt new file mode 100644 index 0000000..1247c39 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestNumericList/content.txt @@ -0,0 +1,32 @@ +!3 A simple list + +A list created as follows {{{ 1 Item one + 2 Item two}}} should be rendered as a two item ordered list. +# + * First create a page with a simple table in it. +# +!note We use backslash is a way to capture the leading space before the *. +!|script| +|start|Page Builder| +|line|\ 1 Item One| +|line|\ 2 Item Two| +|page|SimpleList| +# + * Then request that page +# +!|Response Requester.| +|uri|valid?|contents?| +|SimpleList|true|| +# + * Make sure the html is correct for a simple table. +# +!|Response Examiner.| +|type|pattern|matches?|value| +|contents|
  • Item One
  • |true|| + +!|Response Examiner.| +|type|number|string?| +|line|1|
      | +|line|2|
    1. Item One
    2. | +|line|3|
    3. Item Two
    4. | +|line|4|
    | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestNumericList/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestNumericList/properties.xml new file mode 100644 index 0000000..d0a1fac --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestNumericList/properties.xml @@ -0,0 +1,10 @@ + + + + 20081026080231 + + + + 1225026151448 + -3780571587416529903 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestParentVariables/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestParentVariables/content.txt new file mode 100644 index 0000000..a9a991b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestParentVariables/content.txt @@ -0,0 +1,50 @@ +!2 Test variables declared on parent page. +When a variable is expressed on a page, if that variable was not defined on that page, then !-FitNesse-! looks on the parent pages until it finds one that has the variable. +---- +!3 Test parent variable + * Build parent page with variable definition. +# +|script| +|start|Page Builder| +|line|!-!define x {1}-!| +|page|!-ParentPage-!| +# + * Build sub page with variable expression +# +|script| +|start|Page Builder| +|line|!-x is ${x}-!| +|page|!-ParentPage.SubPage-!| +# + * fetch sub page. +# +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage.SubPage-!|true|| +# + * Make sure variable was expressed. +# +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|x is 1|true|| +---- +!3 Make sure child variables override parent variables. + * Build sub page with both variable definition and expression. +# +|script| +|start|Page Builder| +|line|!-!define x {2}-!| +|line|!-x is ${x}-!| +|page|!-ParentPage.SubPageTwo-!| +# + * fetch sub page. +# +|Response Requester.| +|uri|valid?|contents?| +|!-ParentPage.SubPageTwo-!|true|| +# + * Make sure variable definition from sub page was expressed. +# +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|x is 2|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestParentVariables/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestParentVariables/properties.xml new file mode 100644 index 0000000..92ea5ac --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestParentVariables/properties.xml @@ -0,0 +1,10 @@ + + + + 20090204154649 + + + + 1233784009304 + 8647160220561030480 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestRunningPageName/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestRunningPageName/content.txt new file mode 100644 index 0000000..f0a3fa7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestRunningPageName/content.txt @@ -0,0 +1,34 @@ +!*< test page content definition +!define pageContent (!include -setup SetUp +!include IncludedPage +Including Page running page name is !-${RUNNING_PAGE_NAME}-! +!include -teardown TearDown) +!define firstLevelPageContent (!include SecondLevelIncludedPage +First Level Included running page name is !-${RUNNING_PAGE_NAME}-!) + +*! + +!3 Test that the RUNNING_PAGE_NAME variable is always the top level running page's name +!|script| +|create page|SetUp|with content|Set Up running page name is !-${RUNNING_PAGE_NAME}-!| +|create page|TearDown|with content|Tear Down running page name is !-${RUNNING_PAGE_NAME}-!| +|create page|IncludedPage|with content|Included Page running page name is !-${RUNNING_PAGE_NAME}-!| +|given page|IncludingPage|with content|${pageContent}| +|it should contain|Included Page running page name is IncludingPage| +|it should contain|Including Page running page name is IncludingPage| +|it should contain|Set Up running page name is IncludingPage| +|it should contain|Tear Down running page name is IncludingPage| + + +!3 Test that the RUNNING_PAGE_NAME variable recurses over multiple levels of included pages +!|script| +|create page|SetUp|with content|Set Up running page name is !-${RUNNING_PAGE_NAME}-!| +|create page|TearDown|with content|Tear Down running page name is !-${RUNNING_PAGE_NAME}-!| +|create page|SecondLevelIncludedPage|with content|Second Level Included Page running page name is !-${RUNNING_PAGE_NAME}-!| +|create page|IncludedPage|with content|${firstLevelPageContent}| +|given page|IncludingPage|with content|${pageContent}| +|it should contain|Set Up running page name is IncludingPage| +|it should contain|Tear Down running page name is IncludingPage| +|it should contain|Second Level Included Page running page name is IncludingPage| +|it should contain|First Level Included running page name is IncludingPage| +|it should contain|Including Page running page name is IncludingPage| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSimpleList/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSimpleList/content.txt new file mode 100644 index 0000000..9562630 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSimpleList/content.txt @@ -0,0 +1,32 @@ +!3 A simple list + +A list created as follows {{{ * Item one + * Item two}}} should be rendered as a two item bullet list. +# + * First create a page with a simple table in it. +# +!note We use backslash is a way to capture the leading space before the *. +!|script| +|start|Page Builder| +|line|\ * Item One| +|line|\ * Item Two| +|page|SimpleList| +# + * Then request that page +# +!|Response Requester.| +|uri|valid?|contents?| +|SimpleList|true|| +# + * Make sure the html is correct for a simple table. +# +!|Response Examiner.| +|type|pattern|matches?|value| +|contents|
  • Item One
  • |true|| + +!|Response Examiner.| +|type|number|string?| +|line|1|
      | +|line|2|
    • Item One
    • | +|line|3|
    • Item Two
    • | +|line|4|
    | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSimpleList/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSimpleList/properties.xml new file mode 100644 index 0000000..dbd7296 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSimpleList/properties.xml @@ -0,0 +1,10 @@ + + + + 20081026080355 + + + + 1225026235792 + -4842165197939052867 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSimpleTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSimpleTable/content.txt new file mode 100644 index 0000000..358be0b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSimpleTable/content.txt @@ -0,0 +1,34 @@ +!3 This page tests a simple one-line table. +A simple table is created as follows {{{|a|b|c|}}} The resulting text will be rendered in a one line table of the form.{{{ + +
    abc
    }}} +# + * First create a page with a simple table in it. +# +|script| +|start|Page Builder| +|line|!-|a|b|c|-!| +|page|!-SimpleTablePage-!| +# + * Then request that page +# +|Response Requester.| +|uri|valid?|contents?| +|!-SimpleTablePage-!|true|| +# + * Make sure the html is correct for a simple table. +# +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|a|true|| + +|Response Examiner.| +|type|number|string?| +|line|1|!-<table>-!| +|line|2|!-<tr>-!| +|line|3|!-<td>a</td>-!| +|line|4|!-<td>b</td>-!| +|line|5|!-<td>c</td>-!| +|line|6|!-</tr>-!| +|line|7|!-</table>-!| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSimpleTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSimpleTable/properties.xml new file mode 100644 index 0000000..69dc0db --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSimpleTable/properties.xml @@ -0,0 +1,10 @@ + + + + 20090204153903 + + + + 1233783543552 + 1862507681361489088 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubList/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubList/content.txt new file mode 100644 index 0000000..5c6f747 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubList/content.txt @@ -0,0 +1,34 @@ +!3 A sub list + +A list created as follows {{{ * Item one + * Item two}}} should be rendered as a list with a sub list. +# + * First create a page with a simple table in it. +# +!note We use backslash is a way to capture the leading space before the *. +!|script| +|start|Page Builder| +|line|\ * Item One| +|line|\ * Item Two| +|page|SubList| +# + * Then request that page +# +!|Response Requester.| +|uri|valid?|contents?| +|SubList|true|| +# + * Make sure the html is correct for a simple table. +# +!|Response Examiner.| +|type|pattern|matches?|value| +|contents|
  • Item One
      |true|| + +!|Response Examiner.| +|type|number|string?| +|line|1|
        | +|line|2|
      • Item One
          | +|line|3|
        • Item Two
        • | +|line|4|
        | +|line|5|
      • | +|line|6|
      | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubList/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubList/properties.xml new file mode 100644 index 0000000..71e3fde --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubList/properties.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + 1225026520183 + -2916964933429086644 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubPageWidget/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubPageWidget/content.txt new file mode 100644 index 0000000..d3e5053 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubPageWidget/content.txt @@ -0,0 +1,30 @@ +!2 The Sub Page widget. +Sometimes we want to conveniently create a link to a sub page. We could do this by using the syntax ''!-SuperPage.SubPage-!'', but this is inconvenient. Instead we want to be able to say ''!-^SubPage-!''. + +!|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|SuperPage|^SubPage||true| + +!|Response Requester.| +|uri|valid?|contents?| +|SuperPage|true|| + +The widget should translate into a ? link of the form: + * ''!-^SubPage-!
      [?]'' +!|Response Examiner.| +|type |pattern|matches?|value| +|contents|\^SubPage\[\?\]|true|| + +If the sub page is already present, then the widget should translate into a normal link. + +!|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|SuperPage.SubPage|nothing||true| + +!|Response Requester.| +|uri|valid?|contents?| +|SuperPage|true|| + +!|Response Examiner.| +|type |pattern|matches?|value| +|contents|\^SubPage|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubPageWidget/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubPageWidget/properties.xml new file mode 100644 index 0000000..14faf19 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubPageWidget/properties.xml @@ -0,0 +1,10 @@ + + + + 20081213011308 + + + + 1229152388734 + -2200930259395588095 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubPageWidgetInAlias/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubPageWidgetInAlias/content.txt new file mode 100644 index 0000000..5b2f1eb --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubPageWidgetInAlias/content.txt @@ -0,0 +1,30 @@ +!2 The Sub Page widget in an alias. +Sometimes we want to create an alias to a subpage link as follows: !-[[click here][^SubPage]]-!. + +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-SuperPage-!|!-[[tag][^SubPage]]-!||true| + +|Response Requester.| +|uri|valid?|contents?| +|!-SuperPage-!|true|| + +The widget should translate into a ? link of the form: + * ''tag[?]'' +|Response Examiner.| +|type |pattern|matches?|value| +|contents|tag\[\?\]|true|| + +If the sub page is already present, then the widget should translate into a normal link. + +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-SuperPage.SubPage-!|nothing||true| + +|Response Requester.| +|uri|valid?|contents?| +|!-SuperPage-!|true|| + +|Response Examiner.| +|type |pattern|matches?|value| +|contents|tag|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubPageWidgetInAlias/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubPageWidgetInAlias/properties.xml new file mode 100644 index 0000000..5e33cb5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestSubPageWidgetInAlias/properties.xml @@ -0,0 +1,10 @@ + + + + 20081213011402 + + + + 1229152442036 + 5555914994555846525 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTableColoring/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTableColoring/content.txt new file mode 100644 index 0000000..ad2bbc7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTableColoring/content.txt @@ -0,0 +1,77 @@ +!2 This page tests table coloring. + * Test pages that use the Slim test system should have table row coloring to better highlight test flow. + +!3 Test Fit test system does not include coloring. + * First create the test page. +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-FitTestPage-!|!-!define TEST_SYSTEM {fit} +|Import| +|fit.Fixture| + +|fitnesse.fixtures.ColumnFixtureTestFixture| +|input|=output?| +|1|one| + +|fitnesse.fixtures.PrimeNumberRowFixture| +|prime| +|2| + +| script: echo fixture | +| check | echo | Hello | Hello | + +|fitnesse.fixtures.TearDown|-!||true| +|!-PageHeader-!|header||true| +|!-PageFooter-!|footer||true| + + * Then request the page. +|Response Requester.| +|uri|valid?| +|!-FitTestPage-!|true| + * Ensure that the table have no markup coloring class entries. +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|!-.*slimRowTitle.*-!|false|| +|contents|!-.*slimRowColor.*-!|false|| +---- +!3 Test Slim test system does include coloring. + * First create the test page. +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-SlimTestPage-!|!-!define TEST_SYSTEM {slim} +|Import| +|fit.Fixture| + +|fitnesse.fixtures.ColumnFixtureTestFixture| +|input|=output?| +|1|one| + +|fitnesse.fixtures.PrimeNumberRowFixture| +|prime| +|2| + +|Library| +|echo support| + +|scenario|f|a||b| +|start|fitnesse.slim.test.TestSlim| + +|fit.TimedActionFixture| +|start|fitnesse.fixtures.DelayedCountFixture| +|check|counter|0| +|press|count| +|check|counter|1| + +|fitnesse.fixtures.TearDown|-!||true| +|!-PageHeader-!|header||true| +|!-PageFooter-!|footer||true| + + * Then request the page. +|Response Requester.| +|uri|valid?| +|!-SlimTestPage-!|true| + * Ensure that the table have correct number of title & row markups for coloring. +|Response Examiner.| +|type|pattern|match count?|wrapped html?| +|contents|!-slimRowTitle-!|10|| +|contents|!-slimRowColor-!|8|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTableColoring/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTableColoring/properties.xml new file mode 100644 index 0000000..a0c7922 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTableColoring/properties.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTables/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTables/content.txt new file mode 100644 index 0000000..a38ce01 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTables/content.txt @@ -0,0 +1,62 @@ +!3 This page tests the construction of tables. +# + * First create a page with comment text on it. +# +|script| +|start|Page Builder| +|line|!-|1 Row 1 Cell|-!| +|page|!-TableTestPage-!| +# + * Then request that page +# +|Response Requester.| +|uri|valid?|contents?| +|!-TableTestPage-!|true|| +# + * Examine the page to be sure it is empty. +# +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|\s*\s*1 Row 1 Cell\s*\s*\s*|true|| + +'''Test that spaces inside table cells don't get interpreted.''' +|script| +|start|Page Builder| +|line|!-| 1 is not a list|-!| +|page|!-TableTestPageTwo-!| +# +# +|Response Requester.| +|uri|valid?|contents?| +|!-TableTestPageTwo-!|true|| +# +# +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|1 is not a list|true|| +# +|Response Examiner.| +|type|pattern|matches?| +|contents|
        |false| +|contents|1 is not a list|true| +# + +'''Test that nothing gets interpreted inside literal tables.''' +|script| +|start|Page Builder| +|line|!-!|'''bold'''|''italic''|-!| +|page|!-TableTestPageThree-!| +# +# +|Response Requester.| +|uri|valid?|contents?| +|!-TableTestPageThree-!|true|| +# +# +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|!-'''bold'''-!|true|| +# +|Response Examiner.| +|type|pattern|matches?| +|contents|!-''italic''-!|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTables/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTables/properties.xml new file mode 100644 index 0000000..d81104f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTables/properties.xml @@ -0,0 +1,10 @@ + + + + + + + + 1233783704087 + 4236233898432547799 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTheXrefWidget/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTheXrefWidget/content.txt new file mode 100644 index 0000000..c70bee8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTheXrefWidget/content.txt @@ -0,0 +1,68 @@ +The !-!see-! widget takes a page name as argument. It displays the fully qualified page name in bold, prefixed by '''See:''' + +|Comment| +|!c '''Markup Text'''|!c '''Displayed as'''| +|!-!see SomeTestPage-!|!see SomeTestPage| + +Create some page. + +|script| +|start|Page Builder| +|line|Dummy Text| +|page|!-SomePage-!| + +Create a suite page with a !-!see-! widget + +|script| +|start|Page Builder| +|line|!-!see SomePage-!| +|page|!-SuitePage-!| + +Get the Suite page. + +|Response Requester.| +|uri |valid?| +|!-SuitePage-!|true| + +|Response Examiner.| +|contents?| +|| + +Make sure the page name is formatted properly + +!|Response Examiner.| +|type |pattern|matches?| +|contents|See: SomePage|true| + + +Check the !-!see-! widget with decorated !-SubWiki-! markup. + +Create another page. + +|script| +|start|Page Builder| +|line|Dummy Text| +|page|!-AnotherPage-!| + +Create a page with a !-!see-! widget with decorated markup + +|script| +|start|Page Builder| +|line|!-!see [[another page][.AnotherPage]]-!| +|page|!-YetAnotherPage-!| + +Get the Suite page. + +|Response Requester.| +|uri |valid?| +|!-YetAnotherPage-!|true| + +|Response Examiner.| +|contents?| +|| + +Make sure the page name is formatted properly + +!|Response Examiner.| +|type |pattern|matches?| +|contents|See: another page|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTheXrefWidget/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTheXrefWidget/properties.xml new file mode 100644 index 0000000..a91b52b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTheXrefWidget/properties.xml @@ -0,0 +1,9 @@ + + + + + + +1229152505066 +7293162177854007306 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTitleTag/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTitleTag/content.txt new file mode 100644 index 0000000..91c43b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTitleTag/content.txt @@ -0,0 +1,20 @@ +This page tests the tag. + +First create a page. + +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-TitleTestPage-!|some content||true| + +Then request that page + +|Response Requester.| +|uri|valid?| +|!-TitleTestPage-!|true| + +Examine the page to be sure it has <title> tag + +|Response Examiner.| +|type|pattern|matches?|value| +|contents|<title>!-TitleTestPage-!|true|| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTitleTag/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTitleTag/properties.xml new file mode 100644 index 0000000..426aee8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestTitleTag/properties.xml @@ -0,0 +1,8 @@ + + + + 20060717210150 + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariables/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariables/content.txt new file mode 100644 index 0000000..ecfde90 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariables/content.txt @@ -0,0 +1,125 @@ +!2 Test that variables are properly defined and expressed on a page. + * Variables are defined as !-!define name {value}-!. + * Alternately they are defined as !-!define name (value)-!. + * This is so that you can create variables with {} or () in them. + * They are expressed using !-${name}-! +----- +!3 Test a variable defined and used on the same page. +# + * Create a page with a variable definition and use.. +# +|script| +|start|Page Builder| +|line|!-!define x {1}-!| +|line|!-x is ${x}-!| +|line|!-PAGE_NAME is ${PAGE_NAME}-!| +|line|!-PAGE_PATH is ${PAGE_PATH}-!| +|page|!-VariablePage-!| +# + * Fetch that page. +# +|Response Requester.| +|uri|valid?|contents?| +|!-VariablePage-!|true|| +# + * Inspect the text to see if the variable was expressed. +# +|Response Examiner.| +|type|pattern|matches?| +|contents|x is 1|true| +|contents|PAGE_NAME is !-<-!;a href="Variable!--!Page"!->-!Variable!--!Page|true| +|contents|PAGE_PATH is .|true| + +---- +!3 Test a variable defined and used on the same page using () syntax. +# + * Create a page with a variable definition and use.. +# +|script| +|start|Page Builder| +|line|!-!define x (1)-!| +|line|!-x is ${x}-!| +|page|!-ParenVariablePage-!| +# + * Fetch that page. +# +|Response Requester.| +|uri|valid?|contents?| +|!-ParenVariablePage-!|true|| +# + * Inspect the text to see if the variable was expressed. +# +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|x is 1|true|| + +---- +!3 Test literals in variables with {} and () syntax. +!note The internal representation of a literal is changed from !lit(n) to !lit?n? so as to avoid conflict with the !define X () widget syntax. +# + * Create a page with a variable definition and use.. +# +|script| +|start|Page Builder| +|line|!-!-!define xLitBRACE {!-!-!-xLitBRACE-!-!-!}| +|line|!!--!define xLitPAREN (!-!-!-xLitPAREN-!-!-!)| +|line|!-xLitBRACE is ${xLitBRACE}-!| +|line|!-xLitPAREN is ${xLitPAREN}-!| +|page|!-ParenVariablePage-!| +# + * Fetch that page. +# +|Response Requester.| +|uri|valid?|contents?| +|!-ParenVariablePage-!|true|| +# + * Inspect the text to see if the variable was expressed. +# +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|xLitPAREN is xLitPAREN|true|| +|contents|xLitBRACE is xLitBRACE|true|| + +---- +!3 Test a variables with periods +# + * Create a page with a variable definitions with periods. +# +|script| +|start|Page Builder| +|line|!-!define xy. (1)-!| +|line|!-!define x.y (2)-!| +|line|!-!define .xy (3)-!| +|line|!-!define .x.y. (4)-!| +|line|!-!define .xy. (5)-!| +|line|!-!define .x.y (6)-!| +|line|!-!define x.y. (7)-!| +|line|!-!define x..y (8)-!| +|line|!-~xy. is ${xy.}~-!| +|line|!-~x.y is ${x.y}~-!| +|line|!-~.xy is ${.xy}~-!| +|line|!-~.x.y. is ${.x.y.}~-!| +|line|!-~.xy. is ${.xy.}~-!| +|line|!-~.x.y is ${.x.y}~-!| +|line|!-~x.y. is ${x.y.}~-!| +|line|!-~x..y is ${x..y}~-!| +|page|!-ParenVariablePage-!| +# + * Fetch that page. +# +|Response Requester.| +|uri|valid?|contents?| +|!-ParenVariablePage-!|true|| +# + * Inspect the text to see if the variables were expressed properly. +# +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|~xy. is 1~|true|| +|contents|~x.y is 2~|true|| +|contents|~.xy is 3~|true|| +|contents|~.x.y. is 4~|true|| +|contents|~.xy. is 5~|true|| +|contents|~.x.y is 6~|true|| +|contents|~x.y. is 7~|true|| +|contents|~x..y is 8~|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariables/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariables/properties.xml new file mode 100644 index 0000000..629ea68 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariables/properties.xml @@ -0,0 +1,10 @@ + + + + 20090204154421 + + + + 1233783861431 + 7894600991634282977 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesFromSystemProperties/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesFromSystemProperties/content.txt new file mode 100644 index 0000000..06e2d2a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesFromSystemProperties/content.txt @@ -0,0 +1,61 @@ +!2 Test that variables can be defined as system properties + * If Fitnesse can not find a variable definition on any pages it will look to system properties. +---- +!3 Test a variable defined in system properties + +# + * Set a system property. +# +|System property setter fixture| +|key|value| +|xKey|xValue| +# + * Create a page that uses that property as a variable. +# +|script| +|start|Page Builder| +|line|!-xKey is ${xKey}-!| +|page|!-VariablePage-!| +# + * Fetch that page. +# +|Response Requester.| +|uri|valid?|contents?| +|!-VariablePage-!|true|| +# + * Inspect the text to see if the variable was expressed. +# +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|xKey is xValue|true|| + + +---- +!3 Test that a variable defined in a page supercedes one set in system properties + +# + * Set a system property. +# +|System property setter fixture| +|key|value| +|xKey|xValue| +# + * Create a page that defines the same variable and uses it. +# +|script| +|start|Page Builder| +|line|!-!define xKey {xValueFromPage}-!| +|line|!-xKey is ${xKey}-!| +|page|!-VariablePage-!| +# + * Fetch that page. +# +|Response Requester.| +|uri|valid?|contents?| +|!-VariablePage-!|true|| +# + * Inspect the text to see if the variable was expressed. +# +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|xKey is xValueFromPage|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesFromSystemProperties/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesFromSystemProperties/properties.xml new file mode 100644 index 0000000..05026b2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesFromSystemProperties/properties.xml @@ -0,0 +1,10 @@ + + + + 20090204154859 + + + + 1233784139519 + 6097975137540537166 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesFromUrlInput/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesFromUrlInput/content.txt new file mode 100644 index 0000000..3f6f872 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesFromUrlInput/content.txt @@ -0,0 +1,55 @@ +!2 Test that variables can be defined in url input + * Variables defined in url input take precedence over page and system properties. +---- +!3 Test a variable defined in system properties + +# + * Set a system property. +# +|System property setter fixture| +|key|value| +|xKey|xValue| +# + * Create a page that uses that property as a variable. +# +|script| +|start|Page Builder| +|attributes|Test=true| +|line|!-xKey is ${xKey}-!| +|page|!-VariablePage-!| +# + * Fetch that page. +# +|Response Requester.| +|uri|valid?|contents?| +|!-VariablePage?responder=getPage&xKey=xUriValue-!|true|| +# + * Inspect the text to see if the variable was expressed. +# +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|xKey is xUriValue|true|| + +!3 Test a variable re-defined via URL + +# + * Create a page that defines and uses variable. +# +|script| +|start|Page Builder| +|attributes|Test=true| +|line|!-!define xKey [page defined]-!| +|line|!-xKey is ${xKey}-!| +|page|!-VariablePage-!| +# + * Fetch that page. +# +|Response Requester.| +|uri|valid?|contents?| +|!-VariablePage?responder=getPage&xKey=xUriValue-!|true|| +# + * Inspect the text to see if the variable was expressed. +# +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|xKey is xUriValue|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesFromUrlInput/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesFromUrlInput/properties.xml new file mode 100644 index 0000000..ad77564 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesFromUrlInput/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesWithBracesBracketsAndParents/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesWithBracesBracketsAndParents/content.txt new file mode 100644 index 0000000..67851f0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesWithBracesBracketsAndParents/content.txt @@ -0,0 +1,6 @@ +!define BRACE ({) +!define BRACKET {[} +!define PAREN [(] + +|script| +|check|echo|${BRACE} ${BRACKET} ${PAREN}|{ [ (| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesWithBracesBracketsAndParents/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesWithBracesBracketsAndParents/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/TestVariablesWithBracesBracketsAndParents/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiPagePath/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiPagePath/content.txt new file mode 100644 index 0000000..7e602fa --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiPagePath/content.txt @@ -0,0 +1,2 @@ +A WikiPagePath is a set of .FitNesse.SuiteAcceptanceTests.SuiteWidgetTests.WikiWord elements seperated by dots. +e.g. '''!-FitNesse.UserGuide-!''' diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiPagePath/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiPagePath/properties.xml new file mode 100644 index 0000000..04409d7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiPagePath/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717210152 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiPageReference/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiPageReference/content.txt new file mode 100644 index 0000000..4ed14b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiPageReference/content.txt @@ -0,0 +1,3 @@ +A reference to a wiki page. A WikiPageReference can be a simple .FitNesse.SuiteAcceptanceTests.SuiteWidgetTests.WikiWord, or it can be a WikiPagePath. + * A .FitNesse.SuiteAcceptanceTests.SuiteWidgetTests.WikiWord is a word with no punctuation with capital letters as the word seperators. + * A WikiPagePath is a set of .FitNesse.SuiteAcceptanceTests.SuiteWidgetTests.WikiWord elements separated by dots. diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiPageReference/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiPageReference/properties.xml new file mode 100644 index 0000000..b9a6ff6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiPageReference/properties.xml @@ -0,0 +1,7 @@ + + + + 20081020135121 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiWord/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiWord/content.txt new file mode 100644 index 0000000..4c7718d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiWord/content.txt @@ -0,0 +1 @@ +See .FitNesse.WikiWord diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiWord/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiWord/properties.xml new file mode 100644 index 0000000..d07871e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/WikiWord/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717210153 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/content.txt new file mode 100644 index 0000000..86f5ae8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/content.txt @@ -0,0 +1,2 @@ +!define TEST_SYSTEM {slim} +!contents -R1 -g diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/properties.xml new file mode 100644 index 0000000..b11f3fc --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWidgetTests/properties.xml @@ -0,0 +1,10 @@ + + + + + + slim + + 1224951903697 + -9087830465292801545 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/CreateSecureWiki/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/CreateSecureWiki/content.txt new file mode 100644 index 0000000..799b336 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/CreateSecureWiki/content.txt @@ -0,0 +1,10 @@ +First setup the Authentication module. +!|Authenticator Setup| +|username|password|status?| +|Aladdin|open sesame|| + +Create a page to be requested. +!|Page creator.| +|Page name.|page attributes|valid?| +|ImporteePage |secure-read=true|true| +|ImporteePage.ChildPage||true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/CreateSecureWiki/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/CreateSecureWiki/properties.xml new file mode 100644 index 0000000..e65381b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/CreateSecureWiki/properties.xml @@ -0,0 +1,8 @@ + + + + 20060717210153 + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/ScenarioLibrary/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/ScenarioLibrary/content.txt new file mode 100644 index 0000000..e291593 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/ScenarioLibrary/content.txt @@ -0,0 +1,21 @@ +!|scenario|given editable page|page| +|create page|@page|with authentication|Edit| +|$IT=|echo|@page| + +!|scenario|import|importedPage|into|importingPage| +|check|request page|@importingPage?responder=import&remoteUrl=http://localhost:${INTERNAL_PORT}/@importedPage|200| + +!|scenario|Water mark and edit buttons should be on page|page| +|check|request page|@page?properties|200| +|show|content| +|check|request page|@page|200| +|show|content| +|ensure|content matches|| +|ensure|content matches|Edit Locally| +|ensure|content matches|Edit Remotely| + +!|scenario|Water mark and edit buttons should not be on page|page| +|check|request page|@page|200| +|reject|content matches|| +|reject|content matches|Edit Locally| +|reject|content matches|Edit Remotely| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/ScenarioLibrary/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/ScenarioLibrary/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/ScenarioLibrary/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/SetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/SetUp/content.txt new file mode 100644 index 0000000..257f91b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/SetUp/content.txt @@ -0,0 +1,23 @@ +!include + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestAutomaticUpdate/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestAutomaticUpdate/content.txt new file mode 100644 index 0000000..cc79eb5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestAutomaticUpdate/content.txt @@ -0,0 +1,52 @@ +!c !3 Importing pages can be configured to automatically update upon test. + +Create a page tree to be imported. +!|Page creator.| +|Page name. |Page contents.|valid?| +|ImportedRoot|!contents |true | +|ImportedRoot.PageOne|page one |true | +|ImportedRoot.PageOne.ChildOne|child one |true | +|ImportedRoot.PageTwo|page two |true | + +Create an importing page. +!|Page creator.| +|Page name. |Page contents.|valid?| +|ImportingPage|!contents |true | + +This !-ImportingPage-! will now import the !-ImportingRoot-! page created above. +'''Auto Update is turned one''' +!|Response Requester.| +|uri |valid?| +|ImportingPage?responder=import&autoUpdate=0&remoteUrl=http://localhost:${INTERNAL_PORT}/ImportedRoot&nochunk=true|true| + +We see all 3 pages imported. +!|Response Examiner| +|type|pattern|matches?| +|contents|3 pages were imported|true| + +Sleep a bit so that the last modification time actually changes. +|Sleep|1000| + +Change one of the imported pages. +!|Save Page Requester| +|uri |save contents|status!| +|ImportedRoot.PageOne?edit|Some ultra fresh content|303| + +Now lets run the Suite. +!|Response Requester.| +|uri |valid?| +|ImportingPage?suite|true| + +An import message is displayed in the test output. +!|Response Examiner| +|type|pattern|matches?|contents?| +|contents|Updating imported content...|true|| + +Looking at the imported copy of the modified page will reveal that it was indeed updated. +!|Response Requester.| +|uri |valid?| +|ImportingPage.PageOne|true| + +!|Response Examiner| +|type|pattern|matches?| +|contents|Some ultra fresh content|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestAutomaticUpdate/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestAutomaticUpdate/properties.xml new file mode 100644 index 0000000..5cad22f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestAutomaticUpdate/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestCantImportFromSecureWiki/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestCantImportFromSecureWiki/content.txt new file mode 100644 index 0000000..351abe2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestCantImportFromSecureWiki/content.txt @@ -0,0 +1,18 @@ +!c !3 Can't Import From Secure Wiki +!define TEST_SYSTEM {slim} +!include CreateSecureWiki + +Create an importing page. +!|Page creator.| +|Page name. |Page contents.|valid?| +|ImportingPage|!contents |true | + +This !-ImportingPage-! will now import the secure wiki page. +!|Response Requester.| +|uri |valid?| +|ImportingPage?responder=import&remoteUrl=http://localhost:9123/ImporteePage&nochunk=true|true| + +Since the wiki being imported is secure, the response will promt the user for credentials. +!|Response Examiner| +|type|pattern|matches?|wrapped html?| +|contents|ImporteePage requires authentication|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestCantImportFromSecureWiki/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestCantImportFromSecureWiki/properties.xml new file mode 100644 index 0000000..e809401 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestCantImportFromSecureWiki/properties.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + 1229175050909 + 4429069674233144705 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportFromSecureWikiWithCredentials/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportFromSecureWikiWithCredentials/content.txt new file mode 100644 index 0000000..024e258 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportFromSecureWikiWithCredentials/content.txt @@ -0,0 +1,19 @@ +!c !3 Import From Secure Wiki With Credentials +!define TEST_SYSTEM {slim} + +!include CreateSecureWiki + +Create an importing page. +!|Page creator.| +|Page name. |Page contents.|valid?| +|ImportingPage|!contents |true | + +This !-ImportingPage-! will now import the secure wiki page. Credentials for accessing the remote wiki are included in the request. +!|Response Requester.| +|uri |valid?| +|ImportingPage?responder=import&remoteUrl=http://localhost:9123/ImporteePage&remoteUsername=Aladdin&remotePassword=open+sesame|true| + +The import should succeed just like normal. +!|Response Examiner| +|type|pattern|matches?|wrapped html?| +|contents|1 page was imported|true|| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportFromSecureWikiWithCredentials/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportFromSecureWikiWithCredentials/properties.xml new file mode 100644 index 0000000..19c9037 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportFromSecureWikiWithCredentials/properties.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + 1229175072272 + -7844670793563563311 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportingSampleWiki/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportingSampleWiki/content.txt new file mode 100644 index 0000000..f5608bb --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportingSampleWiki/content.txt @@ -0,0 +1,41 @@ +!c !3 Importing Sample Wiki +The Wiki Import feature is triggered by requesting a wiki page along with two parameters: + * responder=import + * remoteUrl= + +e.g. !-http://localhost/ImportingPage?responder=import&remoteUrl=http://fitnesse.org/FitNesse-! + +A wiki page structure is provided by the set up page. + +Create an importing page. +!|Page creator.| +|Page name. |Page contents.|valid?| +|ImportingPage|!contents |true | + +This !-ImportingPage-! will now import the !-SampleWiki-! page. +!|Response Requester.| +|uri |valid?| +|ImportingPage?responder=import&remoteUrl=http://localhost:9123/SampleWiki|true| + +The above request will initiate a chunked response where all the imported pages are listed. +!|Response Examiner| +|type|pattern|matches?|wrapped html?| +|contents|ChildPageOne|true|| + +!|Response Examiner| +|type|pattern|matches?| +|contents|GrandChildPageOne|true| +|contents|GreatGrandChildPageOne|true| +|contents|ChildPageTwo|true| +|contents|GrandChildPageTwo|true| +|contents|ChildPageThree|true| + +All the pages that were import can now be retrieved. +!|Response Requester.| +|uri |valid?| +|ImportingPage.ChildPageOne|true| +|ImportingPage.ChildPageOne.GrandChildPageOne|true| +|ImportingPage.ChildPageOne.GrandChildPageOne.GreatGrandChildPageOne|true| +|ImportingPage.ChildPageTwo|true| +|ImportingPage.ChildPageTwo.GrandChildPageTwo|true| +|ImportingPage.ChildPageThree|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportingSampleWiki/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportingSampleWiki/properties.xml new file mode 100644 index 0000000..213439a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportingSampleWiki/properties.xml @@ -0,0 +1,9 @@ + + + + + + + 1229175098918 + -3185279582113091109 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportingUnicodeCharacters/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportingUnicodeCharacters/content.txt new file mode 100644 index 0000000..6faa284 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportingUnicodeCharacters/content.txt @@ -0,0 +1,30 @@ +!c !3 Importing Pages with Unicode Characters + +A set of test pages has been prepared in the set up page. + +Create an importing page. +!|Page creator.| +|Page name. |Page contents.|valid?| +|ImportingPage|!contents |true | + +This !-ImportingPage-! will now import the !-SampleWiki-! page. +!|Response Requester.| +|uri |valid?| +|ImportingPage?responder=import&remoteUrl=http://localhost:9123/SampleWiki|true| + +Make sure the unicode page was imported. +!|Response Examiner| +|type|pattern|matches?| +|contents|ChildWithUnicode|true| + +Load the imported unicode page. +!|Response Requester.| +|uri |valid?| contents?| +|ImportingPage.ChildWithUnicode|true|| + +The unicode should still be intact. +!|Response Examiner| +|type|pattern|matches?| +|contents|!-japanese: メインページ-!|true| +|contents|icelandic: Forsíða|true| +|contents|ukranian: !-Головна стаття-!|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportingUnicodeCharacters/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportingUnicodeCharacters/properties.xml new file mode 100644 index 0000000..c916de4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestImportingUnicodeCharacters/properties.xml @@ -0,0 +1,9 @@ + + + + + + + 1225906828508 + 4343884691942306093 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestOrphanedPagesAreRemoved/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestOrphanedPagesAreRemoved/content.txt new file mode 100644 index 0000000..1a2f088 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestOrphanedPagesAreRemoved/content.txt @@ -0,0 +1,46 @@ +!c !3 Orphaned pages are removed. + +Create a page tree to be imported. +!|Page creator.| +|Page name. |Page contents.|valid?| +|ImportedRoot|!contents |true | +|ImportedRoot.PageOne|page one |true | +|ImportedRoot.PageOne.ChildOne|child one |true | +|ImportedRoot.PageTwo|page two |true | + +Create an importing page. +!|Page creator.| +|Page name. |Page contents.|valid?| +|ImportingPage|!contents |true | + +This !-ImportingPage-! will now import the !-ImportingRoot-! page created above. +!|Response Requester.| +|uri |valid?| +|ImportingPage?responder=import&remoteUrl=http://localhost:${INTERNAL_PORT}/ImportedRoot&nochunk=true|true| + +We see all 3 pages imported. +!|Response Examiner| +|type|pattern|matches?| +|contents|3 pages were imported|true| + +Now delete one of the pages from the imported root. +!|Response Requester.| +|uri |status?| +|ImportedRoot.PageOne?responder=deletePage&confirmed=yes|303| + +Importing again will shows only that that orphaned pages have been removed. +!|Response Requester.| +|uri |valid?| +|ImportingPage?responder=import&nochunk=true|true| + +!|Response Examiner| +|type|pattern|matches?|contents?| +|contents|0 pages were imported|true|| + +!|Response Examiner| +|type|pattern|matches?| +|contents|2 orphaned pages were found and have been removed.|true| +|contents|Orphans:|true| +|contents|PageOne|true| +|contents|PageOne.ChildOne|true| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestOrphanedPagesAreRemoved/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestOrphanedPagesAreRemoved/properties.xml new file mode 100644 index 0000000..4829ca5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestOrphanedPagesAreRemoved/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestPropertiesPageHasImportForm/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestPropertiesPageHasImportForm/content.txt new file mode 100644 index 0000000..51af5e2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestPropertiesPageHasImportForm/content.txt @@ -0,0 +1,22 @@ +!c !3 Import Form on Properties Page +Users will initiate a Wiki Import by visiting the page that will do the importing. The properties view of the page will have a form where the user will supply the URL of the wiki to import and then click the Import button. + +First we need a page. +!|Page creator.| +|Page name. |Page contents.|valid?| +|ImportingPage|!contents |true | + +Request the properties view of this page. +!|Response Requester.| +|uri |valid?| +|ImportingPage?properties|true| + +Now lets look at the form. +!|Response Examiner| +|type|pattern|matches?|wrapped html?| +|contents|Wiki Import.|true|| + +!|Response Examiner| +|type|pattern|matches?| +|contents| + + + + + + + + + + + + 1229175127339 + -5400251305088093012 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestPropertiesPageHasUpdateForm/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestPropertiesPageHasUpdateForm/content.txt new file mode 100644 index 0000000..86ab105 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestPropertiesPageHasUpdateForm/content.txt @@ -0,0 +1,27 @@ +!c !3 Import Update Form on Properties Page +Once a page has been updated, it no longer has the Wiki Import form. Instead is has a Wiki Import Update form. Essentially it is just one button that will update the imported pages. + +First we need a page. +!|Page creator.| +|Page name. |Page contents.|valid?| +|ImportingPage|!contents |true | + +Import the !-SampleWiki-!. +!|Response Requester.| +|uri |valid?| +|ImportingPage?responder=import&remoteUrl=http://localhost:9123/SampleWiki|true| + +Request the properties view of this page. +!|Response Requester.| +|uri |valid?| +|ImportingPage?properties|true| + +Now lets look at the form. +!|Response Examiner| +|type|pattern|matches?|wrapped html?| +|contents|Wiki Import Update|true|| + +!|Response Examiner| +|type|pattern|matches?| +|contents| + + + + + + + + + + 1229175155084 + -2757044400059238608 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestUnmodifiedPagesAreNotImported/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestUnmodifiedPagesAreNotImported/content.txt new file mode 100644 index 0000000..974d8f5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestUnmodifiedPagesAreNotImported/content.txt @@ -0,0 +1,55 @@ +!c !3 Unmodified Pages are not imported. + +Create a page tree to be imported. +!|Page creator. | +|Page name. |Page contents.|valid?| +|ImportedRoot |!contents |true | +|ImportedRoot.PageOne |page one |true | +|ImportedRoot.PageOne.ChildOne|child one |true | +|ImportedRoot.PageTwo |page two |true | + +Create an importing page. +!|Page creator. | +|Page name. |Page contents.|valid?| +|ImportingPage|!contents |true | + +This !-ImportingPage-! will now import the !-ImportingRoot-! page created above. +!|Response Requester. | +|uri |valid?| +|ImportingPage?responder=import&remoteUrl=http://localhost:${INTERNAL_PORT}/ImportedRoot&nochunk=true|true | + +We see all 3 pages imported. +!|Response Examiner | +|type |pattern |matches?| +|contents|3 pages were imported|true | + +Sleep a bit so that the last modification time actually changes. +|Sleep|1000| + +Importing again will show that no pages were imported since none had changed. +!|Response Requester. | +|uri |valid?| +|ImportingPage?responder=import&nochunk=true|true | + +!|Response Examiner | +|type |pattern |matches?|wrapped html?| +|contents|0 pages were imported |true | | +|contents|3 pages were unmodified|true | | + +Now we'll update one of the imported pages... +!|Save Page Requester | +|uri |save contents|status!| +|ImportedRoot.PageOne?edit|3.141592 |303 | + +Importing again will shows only 1 page imported, 2 unchanged. +!|Response Requester. | +|uri |valid?| +|ImportingPage?responder=import&nochunk=true|true | + +!|Response Examiner | +|type |pattern |matches?| +|contents|1 page was imported |true | +|contents|PageOne |true | +|contents|2 pages were unmodified|true | + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestUnmodifiedPagesAreNotImported/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestUnmodifiedPagesAreNotImported/properties.xml new file mode 100644 index 0000000..08ecd48 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestUnmodifiedPagesAreNotImported/properties.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + 1229175184444 + 1590348794266587059 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestUpdatingImportedWiki/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestUpdatingImportedWiki/content.txt new file mode 100644 index 0000000..1db5ab1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestUpdatingImportedWiki/content.txt @@ -0,0 +1,38 @@ +!c !3 Updating an Imported Wiki +Once a wiki has been imported, the import can be updated. When updating the remoteUrl parameter is no longer needed. + +Create an importing page. +!|Page creator.| +|Page name. |Page contents.|valid?| +|ImportingPage|!contents |true | + +This !-ImportingPage-! will now import the !-SampleWiki-! page. +!|Response Requester.| +|uri |valid?| +|ImportingPage?responder=import&remoteUrl=http://localhost:9123/SampleWiki|true| + +Now we'll change the content of one of the local pages. +!|Save Page Requester| +|uri |save contents|status!|contents?| +|ImportingPage.ChildPageOne?edit|3.141592|303|| + +Update the imported wiki. +!|Response Requester.| +|uri |valid?| +|ImportingPage?responder=import&nochunk=true|true| + +The !-ChildPageOne-! page will be listed. +!|Response Examiner| +|type|pattern|matches?|wrapped html?| +|contents|0 pages were imported|true|| + +When we view !-ChildPageOne-!... +!|Response Requester.| +|uri |valid?| +|ImportingPage.ChildPageOne|true| + +We'll see the changed content since the page on the server was not modified. +!|Response Examiner| +|type|pattern|matches?| +|contents|child page one|false| +|contents|3.141592|true| diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestUpdatingImportedWiki/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestUpdatingImportedWiki/properties.xml new file mode 100644 index 0000000..d74ff10 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestUpdatingImportedWiki/properties.xml @@ -0,0 +1,9 @@ + + + + + + + 1229175211723 + -6587953256246175028 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestWaterMarkAndEditButtons/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestWaterMarkAndEditButtons/content.txt new file mode 100644 index 0000000..9c44e49 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestWaterMarkAndEditButtons/content.txt @@ -0,0 +1,11 @@ +!|script| +|given page|ImportingPage| +|given page|ImportedPage| +|given page|ImportedPage.ImportedChild| +|import|ImportedPage|into|ImportingPage| +|Water mark and edit buttons should be on page|ImportingPage.ImportedChild| +|| +|Water mark and edit buttons should not be on page|ImportingPage| +|Water mark and edit buttons should not be on page|ImportedPage| +|Water mark and edit buttons should not be on page|ImportedPage.ImportedChild| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestWaterMarkAndEditButtons/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestWaterMarkAndEditButtons/properties.xml new file mode 100644 index 0000000..0179324 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/TestWaterMarkAndEditButtons/properties.xml @@ -0,0 +1,14 @@ + + + true + true + true + true + true + true + true + true + true + 1238349003304 + 2669078479729799561 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/content.txt new file mode 100644 index 0000000..9d73f0d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/content.txt @@ -0,0 +1,11 @@ +!c !3 Wiki Import Suite +Wiki Import is a key feature for development teams. It allows each developer to have their own FitNesse playground to run tests on the code they're playing with while sharing the test definitions with a central repository. A test author need only write a test once and all the developers will be able to import that test to their local environment. + +Wiki Import replaces the old, deprecated and now removed, Virtual Wiki feature. + +!note make sure to define PORT {80} in root. + +!contents + +!define TEST_SYSTEM {slim} +!define INTERNAL_PORT {9123} diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/properties.xml new file mode 100644 index 0000000..e37b534 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiImportTests/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestBreadCrumbs/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestBreadCrumbs/content.txt new file mode 100644 index 0000000..011948f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestBreadCrumbs/content.txt @@ -0,0 +1,54 @@ +!2 Every wiki page displays a series of links (breadcrumbs) to the ancestors of the current page. + * The last breadcrumb should name the current page without a link. +!3 Test top level page + * Create a top level page +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-TopLevelPage-!|top level page||true| + + * Request the page. +|Response Requester.| +|uri|valid?|contents?| +|!-TopLevelPage-!|true|| + + * Examine the requested page to be sure the link to itself is displayed. +!|Response Examiner. | +|type |pattern |matches?| +|contents|<${TITLE_TAG}>TopLevelPage|true | + +!3 A second level page - the top level should link up, the current page should not link. + * Create a top level page +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-TopLevelPage.SecondLevelPage-!|second level page||true| + + * Request the page. +|Response Requester.| +|uri|valid?|contents?| +|!-TopLevelPage.SecondLevelPage-!|true|| + + * Examine the requested page to be sure the link to itself is displayed. +!|Response Examiner. | +|type |pattern |matches?| +|contents|TopLevelPage. |true | +|contents|<${TITLE_TAG}>SecondLevelPage|true | + +!3 A second level page - the top four levels should link up, the current page should not link. + * Create a fifth level page +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-TopLevelPage.SecondLevelPage.ThirdLevelPage.FourthLevelPage.FifthLevelPage-!|fifth level page||true| + + * Request the page. +|Response Requester.| +|uri|valid?|contents?| +|!-TopLevelPage.SecondLevelPage.ThirdLevelPage.FourthLevelPage.FifthLevelPage-!|true|| + + * Examine the requested page to be sure the link to itself is displayed. +!|Response Examiner. | +|line |inOrder?| +|
      1. TopLevelPage
      2. |true | +|
      3. SecondLevelPage
      4. |true | +|
      5. ThirdLevelPage
      6. |true | +|
      7. FourthLevelPage
      8. |true | +|<${TITLE_TAG}>FifthLevelPage |true | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestBreadCrumbs/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestBreadCrumbs/properties.xml new file mode 100644 index 0000000..416d50a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestBreadCrumbs/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + +1229175284140 +-3891867006271891204 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestHeadersAndFooters/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestHeadersAndFooters/content.txt new file mode 100644 index 0000000..760788a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestHeadersAndFooters/content.txt @@ -0,0 +1,49 @@ +!2 This page tests !-PageHeader and PageFooter-! + * The contents of the !-PageHeader-! should appear at the start of every page. Likewise the contents of !-PageFooter-! should appear at the end of every page. + * Sub pages inherit the headers and footers of their parent, unless they have !-PageHeader-! and !-PageFooter-! siblings. +!3 Test normal header and footer without sub pages. + * First create a normal page, plus header and footer pages. +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-NormalPage-!|normal||true| +|!-PageHeader-!|header||true| +|!-PageFooter-!|footer||true| + * Then request the normal page +|Response Requester.| +|uri|valid?| +|!-NormalPage-!|true| + * Ensure that the header and and footer text appear in the normal page. +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|!-(header).*(normal).*(footer)-!|true|| +---- +!3 Test that sub pages inherit headers and footers. + * Create a sub page +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-NormalPage.SubPage-!|sub page||true| + * Then request the Sub page +|Response Requester.| +|uri|valid?| +|!-NormalPage.SubPage-!|true| + * Ensure that the header and and footer text are inherited by the sub page. +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|!-(header).*(sub page).*(footer)-!|true|| +---- +!3 Test that sub headers and sub footers override inherited headers and footers. + * Create sub header and sub footer +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-NormalPage.PageHeader-!|sub header||true| +|!-NormalPage.PageFooter-!|sub footer||true| + * Then request the Sub page +|Response Requester.| +|uri|valid?| +|!-NormalPage.SubPage-!|true| + * Ensure that the sub header and and sub footer text are inherited override their parents.. +|Response Examiner.| +|type|pattern|matches?|wrapped html?| +|contents|!-(sub header).*(sub page).*(sub footer)-!|true|| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestHeadersAndFooters/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestHeadersAndFooters/properties.xml new file mode 100644 index 0000000..1a50247 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestHeadersAndFooters/properties.xml @@ -0,0 +1,10 @@ + + + + 20081213073520 + + + + 1229175320843 + -5730101293875182094 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationDefault/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationDefault/content.txt new file mode 100644 index 0000000..395d435 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationDefault/content.txt @@ -0,0 +1,25 @@ +!3 Each page has links in the left rail. This test verifies the default set of links. +Create a page. + +|Page creator. | +|Page name. |Page contents. |valid?| +|!-SomePage-!|any page at all|true | + +Request the page + +|Response Requester. | +|uri |valid?|contents?| +|!-SomePage-!|true | | + +Examine the requested page to ensure the correct links are displayed in the correct order. + +!| Response Examiner. | +|line |inOrder?| +|
      9. Edit
      10. |true | +|
      11. Properties
      12. |true | +|
      13. Where Used
      14. |true | +|
      15. Versions
      16. |true | +|Files |true | +|
      17. Search
      18. |true | +|
      19. Recent Changes
      20. |true | +|User Guide |true | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationDefault/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationDefault/properties.xml new file mode 100644 index 0000000..36ffb18 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationDefault/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + +1229175351546 +-4501338062287278289 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationWithSuite/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationWithSuite/content.txt new file mode 100644 index 0000000..6c8b771 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationWithSuite/content.txt @@ -0,0 +1,29 @@ +!3 If the Suite attribute is set to true, the Suite button should show up on top with a break between it and the other action buttons. +Create a suite page. + +|Page creator. | +|Page name. |Page contents. |page attributes|valid?| +|!-SomePage-!|any page at all|Suite=true |true | + +Request the page + +|Response Requester. | +|uri |valid?|contents?| +|!-SomePage-!|true | | + +Examine the requested page to ensure the correct links are displayed in the correct order. + +!| Response Examiner. | +|line |inOrder?| +|Suite |true | +|Edit |true | +|Properties |true | +|Where Used |true | +|Versions |true | +|Files |true | +|Search |true | +|Recent Changes |true | +|Test History |true | +|Page History|true | +|Remote Debug |true | +|User Guide |true | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationWithSuite/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationWithSuite/properties.xml new file mode 100644 index 0000000..bba8a5e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationWithSuite/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + +1229175373086 +-8968734420492115848 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationWithTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationWithTest/content.txt new file mode 100644 index 0000000..d6addc2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationWithTest/content.txt @@ -0,0 +1,29 @@ +!3 If the Test attribute is set to true, the Test button should show up on top with a break between it and the other action buttons. +Create a test page. + +|Page creator. | +|Page name. |Page contents. |page attributes|valid?| +|!-SomePage-!|any page at all|Test=true |true | + +Request the page + +|Response Requester. | +|uri |valid?|contents?| +|!-SomePage-!|true | | + +Examine the requested page to ensure the correct links are displayed in the correct order. + +!| Response Examiner. | +|line |inOrder?| +|Test |true | +|Edit |true | +|Properties |true | +|Where Used |true | +|Versions |true | +|Files |true | +|Search |true | +|Recent Changes |true | +|Test History |true | +|Page History|true | +|Remote Debug |true | +|User Guide |true | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationWithTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationWithTest/properties.xml new file mode 100644 index 0000000..0b60030 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestNavigationWithTest/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + +1229175394179 +-5519690890382735370 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestPageTags/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestPageTags/content.txt new file mode 100644 index 0000000..1aa2eb4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestPageTags/content.txt @@ -0,0 +1,79 @@ +!define TEST_SYSTEM {slim} +!2 Wiki pages should display page tags within the header. + +!3 Page with tags specified - should include tags in header. + * Create a wiki page with tags specified. +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-PageWithTags-!|page with tags|Suites=Tags For The Page|true| + + * Request the page. +|Response Requester.| +|uri|valid?| +|!-PageWithTags-!|true| + + * Examine the requested page to be sure the tags are displayed. +!|Response Examiner. | +|type |pattern |matches?| +|contents|Tags For The Page|true | + + +!3 Page with no tags specified - should not include blank H5 html element in header. + * Create a wiki page with no tags specified. +|Page creator.| +|Page name.|Page contents.|Page attributes.|valid?| +|!-PageWithNoTags.-!|page with no tags||true| + + * Request the page. +|Response Requester.| +|uri|valid?| +|!-PageWithNoTags-!|true| + + * Examine the requested page to be sure the tag's H5 element is not displayed in header. +!|Response Examiner.| +|type|pattern|matches?| +|contents|
        .*
        .*
        .*
        |false| + + +!3 Refactor confirmation page with tags specified - should include tags in header. + * Request the move (refactor) wiki page for a page with tags specified. +|Response Requester.| +|uri|valid?| +|!-PageWithTags-!?refactor&type=move|true| + + * Examine the requested page to be sure the tags are displayed. +!|Response Examiner. | +|type |pattern |matches?| +|contents|Tags For The Page|true | + + +!3 Test results page with tags specified - should include tags in header. + + * Create a simple test page +|script|Page Builder| +|attributes|Suites=Tags On Test Page| +|line|${SUT_PATH}| +|line|!-|!-fitnesse.testutil.PassFixture-!-!!-|-!| +|page|!-TestPage-!| + + * Run the test page. +|Response Requester.| +|uri |valid?| +|!-TestPage?responder=test-!|true| + + * Examine the test results page to be sure the tags are displayed. +!|Response Examiner.| +|type|pattern|matches?| +|contents|Tags On Test Page|true| + + +!3 Test results error log page with tags specified - should include test's tags in header. + * Request the page. +|Response Requester.| +|uri |valid?| +|!-TestPage?executionLog-!|true| + + * Examine the requested page to be sure the tags are displayed. +|Response Examiner. | +|type |pattern |matches?| +|contents|Tags On Test Page|true | diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestPageTags/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestPageTags/properties.xml new file mode 100644 index 0000000..94161f1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/TestPageTags/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/content.txt new file mode 100644 index 0000000..9946b06 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/content.txt @@ -0,0 +1,3 @@ +Tests for components that are displayed on every wiki page. + +!contents \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/properties.xml new file mode 100644 index 0000000..b4d33df --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteWikiPageResponderTests/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/TearDown/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/TearDown/content.txt new file mode 100644 index 0000000..58bb80f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/TearDown/content.txt @@ -0,0 +1,3 @@ +---- +|tear down| + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/TearDown/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/TearDown/properties.xml new file mode 100644 index 0000000..05722f3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/TearDown/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + 1224951822819 + -6503696846980252314 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/content.txt new file mode 100644 index 0000000..678fe93 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/content.txt @@ -0,0 +1,39 @@ +!2 ''!-FitNesse-! acceptance tests suites'' +| >SuiteWidgetTests | ''Specify the markup language of wiki pages.'' | +| >SuiteWikiPageResponderTests | ''Specify general behavior of all wiki pages.'' | +| >SuiteEditResponderTests | ''Specify the behavior of edit requests.'' | +| >SuiteResponderTests | ''Specify the behavior of the responders.'' | +| >SuiteWikiImportTests | ''Specify the behavior of the Wiki Import feature'' | +| >SuiteAuthenticationTests | ''Specify the authentication design'' | +| >SuiteFixtureTests | ''Specify the behavior of various fixtures'' | +| >SuiteSymbolicLinkTests | ''Demonstrate usage and behavior of symbolic links'' | +| >SuiteFitDecoratorTests | ''Demonstrate usage and behavior of Fit Decorators'' | +| >SuiteSlimTests | ''Slim Specific Tests'' | +| >SuiteTestHistory | ''Test History tests'' | +| >SuiteVersionsControllerTests | Versions controller tests | +| >SuiteTestSystems | Test interaction with custom test systems | + +!2 ''Classpaths'' +!define SUT_PATH (!- +!path lib/*.jar +-!) +---- +!2 ''Port'' +FitNesse is running on port: ${FITNESSE_PORT} + +Use a non-default port number, so SLIM tests systems can be run as well: + +!define SLIM_PORT {1} +---- +!2 ''Utilities'' + * SuiteAcceptanceTests.PageHeader + * SuiteAcceptanceTests.PageFooter + * SuiteAcceptanceTests.SetUp + * SuiteAcceptanceTests.TearDown + +---- +!2 Collapse Set Up and Tear Down +!define COLLAPSE_SETUP {true} +!define COLLAPSE_TEARDOWN {true} + +!define TITLE_TAG {li} \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/properties.xml new file mode 100644 index 0000000..63cb44a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteAcceptanceTests/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + +1228834237169 +-6459613553884691275 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteFitAcceptanceTests/TestFixtures/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteFitAcceptanceTests/TestFixtures/content.txt new file mode 100644 index 0000000..8669729 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteFitAcceptanceTests/TestFixtures/content.txt @@ -0,0 +1,3885 @@ +!- + +
        + +

        Fit Specification: Fixtures

        + +

         

        + +

        Fit documents are owned by the customers +and domain experts on your team.  The documents +contain examples of how the program should +work and Fit checks +the examples against the actual program.  The examples are placed +in tables with a special first row, but other +than that, there are no limitations on how the examples are structured.  Customers should write tables in the way that +comes most naturally to them.

        + +

         

        + +

        Since there aren’t any limits to the way +tables are structured, Fit can’t +interpret the tables automatically.  It requires a fixture to interpret the +table.  A fixture is a piece +of code, written by the team’s programmers, +that understands the structure of each +type of table and how to check +it against the actual program.

        + +

         

        + +

        Contents:

        + +

         

        + +

        Loading +Fixtures. 1

        + +

        Errors. 2

        + +

        Interpreting +Tables. 2

        + +

        Default +Interpretation. 3

        + +

        Checking +Cells. 4

        + +

        Right +and Wrong. 4

        + +

        Empty +Cells. 4

        + +

        Unexpected +Errors. 4

        + +

        Expected +Errors. 5

        + +

        Expected +Blank. 5

        + +

        Cell +HTML Converts to Text 6

        + +

        Comparison +Values Convert to HTML. 6

        + +

        Type +Conversion.. 7

        + +

        HTML +to Text Conversion. 7

        + +

        Type +Conversion. 7

        + +

        Predefined +Fixtures. 7

        + +

        Run +Results. 8

        + +

         

        + +

        Loading Fixtures

        + +

         

        + +

        The first row of a table is always the name of the fixture used to interpret +that table.  There’s no special +logic applied; if the first cell +in the first row is not the correct +fixture name, Fit won’t try to guess where it is.  (Note: we use the keyword “(missing)” to indicate +a missing fixture name in the table below.)

        + +

         

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +

        fat.FixtureNameFixture

        +
        +

         

        +
        +

        Table

        +
        +

        FixtureName()

        +
        +

        [exampleFixture]

        +
        +

        exampleFixture

        +
        +

        [exampleFixture]

        +

        [1] [2]

        +

        [3] [4]

        +
        +

        exampleFixture

        +
        +

        [] [exampleFixture]

        +
        +

        (missing) 

        +
        +

        [exampleFixture] [foo]

        +
        +

        exampleFixture

        +
        +

        []

        +

        [exampleFixture]

        +
        +

        (missing)

        +
        + +

         

        + +

        The fixture name is the full name of the code +that will interpret the table.  (In Java, +it’s a class.)  +The fixture name is case sensitive and +must be fully qualified (that is, include any +namespace information).  All implementations of Fit use the “dot” +notation of Java to qualify names.

        + +

         

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +

        fat.FixtureLoadFixture

        +
        +

         

        +
        +

        FixtureName

        +
        +

        LoadResult()

        +
        +

        fat.ExampleFixture

        +
        +

        loaded

        +
        +

        fat.exampleFixture

        +
        +

        error

        +
        +

        Fat.ExampleFixture

        +
        +

        error

        +
        +

        ExampleFixture

        +
        +

        error

        +
        +

        fat.Example

        +
        +

        error

        +
        + +

         

        + +

        Errors

        + +

         

        + +

        When the fixture isn’t valid, Fit annotates the cell +with an explanatory error message.  What +makes something a fixture or not depends on which +implementation of Fit you’re using.  In +Java, for example, only classes that extend +the “Fixture” class are fixtures.  Other languages might use the presence +of specific +methods to determine whether something is a fixture or not.

        + +

         

        + +

        This error message may be displayed as part of additional information, such +as an exception stack +trace.

        + +

         

        + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +

        fat.FixtureLoadFixture

        +
        +

         

        +
        +

         

        +
        +

        FixtureName

        +
        +

        LoadResult()

        +
        +

        ErrorMessage()

        +
        +

        fat.ExampleFixture

        +
        +

        loaded

        +
        +

        (none)

        +
        +

        NoSuchFixture

        +
        +

        error

        +
        +

        The fixture + "NoSuchFixture" was not found.

        +
        +

        fat.NotAFixture

        +
        +

        error

        +
        +

        "fat.NotAFixture” + was found, but it’s not a fixture.

        +
        + +

         

        + +

        Case-sensitivity errors use the same error message as other “not found” +errors.

        + +

         

        + + + + + + + + + + + + + + + + + +
        +

        fat.FixtureLoadFixture

        +
        +

         

        +
        +

         

        +
        +

        FixtureName

        +
        +

        LoadResult()

        +
        +

        ErrorMessage()

        +
        +

        fat.exampleFixture

        +
        +

        error

        +
        +

        The fixture "fat.exampleFixture" was not found.

        +
        + +

         

        + +

         

        + +

         

        + +

        NOTE TO IMPLEMENTORS:

        + +

        The remainder of this document is incomplete.  The above examples should pass.  Don’t try to make any of the following +examples pass, as they will surely change.

        + +

         

        + +

        Interpreting Tables

        + +

         

        + +

        By default, fixtures interpret tables from left to right and top to bottom.

        + +

         

        + + + + + + + + + + + + + + +
        +

        fat.InterpretationOrderFixture

        +
        +

         

        +
        +

        Table

        +
        +

        InterpretationOrder()

        +
        +

        [fat.ConcatenateFixture]

        +

        [top left] [top middle] [top right]

        +

        [bottom left] [bottom middle] [bottom right]

        +
        +

        top left, top middle, top right, bottom left, bottom middle, bottom right

        +
        + +

         

        + +

        Although left-to-right and top-to-bottom is the default, fixtures may +interpret tables in any order they please.  +The fixture in the following example interprets tables column +by column, from right to left and top to +bottom.

        + +

         

        + + + + + + + + + + + + + + +
        +

        fat.InterpretationOrderFixture

        +
        +

         

        +
        +

        Table

        +
        +

        InterpretationOrder()

        +
        +

        [fat.ReverseConcatenateFixture]

        +

        [top left] [top middle] [top right]

        +

        [bottom left] [bottom middle] [bottom right]

        +
        +

        top right, bottom right, top middle, bottom middle, top left, bottom left

        +
        + +

         

        + +

        Default Interpretation

        + +

         

        + +

        Fit’s default interpretation of a cell +is to mark it with the “ignore” standard annotation.  (See the annotation +specification for details about standard annotations.)

        + +

         

        + + + + + + + + + + + + + + + + + +
        +

        fat.InterpreterFixture

        +
        +

         

        +
        +

         

        +
        +

        InputTable

        +
        +

        InterpretedTable()

        +
        +

        RenderedOutput()

        +
        +

        [fat.DoNothingFixture]

        +

        [left] [right]

        +
        +

        <table>

        +

          + <tr><td>fat.DoNothingFixture</td></tr>

        +

          <tr><td bgcolor="#efefef">left</td><td + bgcolor="#efefef">right</td></tr>

        +

        </table>

        +
        +

         

        +
        + +

         

        + +

        If an error occurs +while interpreting a cell, Fit marks it with +the “error” annotation and includes whatever +error information is available.  (In +Java, this is a stack trace.)

        + +

         

        + + + + + + + + + + + + + + + + + + + + + + + +
        +

        ??

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        + +

         

        + +

        Fixtures may override the default interpretation and do whatever they +wish.  The fixture in the following +example marks all cells with the “right” +standard annotation unless an error occurs, +in which case +it is marked with the “ignore” standard annotation.

        + +

         

        + + + + + + + + + + + + + + + + + + + + + + + +
        +

        ??

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        + +

         

        + +

        Checking +Cells

        + +

         

        + +

        Fit provides a standard service +for checking +a table cell’s correctness.  Given a table cell +and a value, Fit compares the two and annotates +the cell accordingly.  (This section +assumes that the comparison value is a +string.  See “Type Conversion,” below, +for information about what happens when it’s not.)

        + +

         

        + +

        Right and Wrong

        + +

         

        + +

        When the table cell and the +comparison value match, +Fit marks the cell “right” using a standard +annotation.  (See the annotation specification for more about standard +annotations.)

        + +

         

        + + + + + + + + + + + + + + + + + +
        +

        fat.CheckFixture

        +
        +

         

        +
        +

         

        +
        +

        Cell

        +
        +

        ComparisonValue

        +
        +

        Annotation()

        +
        +

        <td>Something</td>

        +
        +

        Something

        +
        +

        right

        +
        + +

         

        + +

        When they don’t match, Fit +marks the cell wrong and includes +the comparison value.

        + +

         

        + + + + + + + + + + + + + + + + + + + + + + + +
        +

        fat.CheckFixture

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

        Cell

        +
        +

        ComparisonValue

        +
        +

        Annotation()

        +
        +

        Expected()

        +
        +

        Actual()

        +
        +

        <td>Something</td>

        +
        +

        Something else

        +
        +

        wrong

        +
        +

        Something

        +
        +

        Something else

        +
        + +

         

        + +

        Empty Cells

        + +

         

        + +

        If the table cell is empty, +Fit uses the “info” standard annotation to put the comparison +value in the cell.

        + +

         

        + + + + + + + + + + + + + + + + + + + + +
        +

        fat.CheckFixture

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

        Cell

        +
        +

        ComparisonValue

        +
        +

        Annotation()

        +
        +

        Info()

        +
        +

        <td></td>

        +
        +

        Anything

        +
        +

        info

        +
        +

        Anything

        +
        + +

         

        + +

        Unexpected +Errors

        + +

         

        + +

        If an error occurs +while comparing the table cell +to the fixture’s value, Fit uses the “error” standard annotation to put +information about the error into the table.  +If a stack trace +or similar information is available, it is included.

        + +

         

        + +

        The following examples use the keyword “(causes +error)” in the “ComparisonValue” column to +indicate that an error occurs.

        + +

         

        + + + + + + + + + + + + + + + + + +
        +

        fat.CheckFixture

        +
        +

         

        +
        +

         

        +
        +

        Cell

        +
        +

        ComparisonValue

        +
        +

        Annotation()

        +
        +

        <td>something</td>

        +
        +

        (causes error)

        +
        +

        error

        +
        + +

         

        + +

        If the table cell is empty, +Fit uses the “info” standard annotation to put the word “error” into the +table.  No error information (such +as a stack trace) +is included.

        + +

         

        + + + + + + + + + + + + + + + + + + + + +
        +

        fat.CheckFixture

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

        Cell

        +
        +

        ComparisonValue

        +
        +

        Annotation()

        +
        +

        Info()

        +
        +

        <td></td>

        +
        +

        (causes error)

        +
        +

        info

        +
        +

        error

        +
        + +

         

        + +

        Expected +Errors

        + +

         

        + +

        If the table cell contains +the word “error,” Fit assumes that an error was expected.  If an error occurs, +Fit marks the cell right.  If it doesn’t, Fit marks the cell +wrong.

        + +

         

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +

        fat.CheckFixture

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

        Cell

        +
        +

        ComparisonValue

        +
        +

        Annotation()

        +
        +

        Expected()

        +
        +

        Actual()

        +
        +

        <td>error</td>

        +
        +

        (causes error)

        +
        +

        right

        +
        +

        n/a

        +
        +

        n/a

        +
        +

        <td>error</td>

        +
        +

        Anything

        +
        +

        wrong

        +
        +

        error

        +
        +

        Anything

        +
        + +

         

        + +

        Expected +Blank

        + +

         

        + +

        Fit does not support +a standard “blank” keyword similar to the “error” keyword.  (Although the following example uses a +“(blank)” keyword to indicate a blank comparison +value, this keyword was programmed as part of fat.CheckFixture +and is not a standard part of Fit.)

        + +

         

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +

        fat.CheckFixture

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

        Cell

        +
        +

        ComparisonValue

        +
        +

        Annotation()

        +
        +

        Expected()

        +
        +

        Actual()

        +
        +

        Info()

        +
        +

        <td>blank</td>

        +
        +

        (blank)

        +
        +

        wrong

        +
        +

        blank

        +
        +

        (blank)

        +
        +

        n/a

        +
        +

        <td>blank</td>

        +
        +

        Anything

        +
        +

        wrong

        +
        +

        blank

        +
        +

        Anything

        +
        +

        n/a

        +
        +

        <td></td>

        +
        +

        (blank)

        +
        +

        info

        +
        +

        n/a

        +
        +

        n/a

        +
        +

        (blank)

        +
        +

        <td></td>

        +
        +

        Anything

        +
        +

        info

        +
        +

        n/a

        +
        +

        n/a

        +
        +

        Anything

        +
        + +

         

        + +

        If a fixture wishes to allow blank values, it must handle +this on its own.  A common +approach is for the fixture to look for blank +results and to convert them into a special +keyword, such as “(blank)” or “(none)”.  Use this keyword in the table when a blank +result is expected.

        + +

         

        + +

        Cell HTML Converts to Text

        + +

         

        + +

        The contents of the cell +are converted from HTML to text as described +in the parsing specification.

        + +

         

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +

        fat.CheckFixture

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

        Cell

        +
        +

        ComparisonValue

        +
        +

        Annotation()

        +
        +

        Expected()

        +
        +

        Actual()

        +
        +

        <td><i>anything</i></td>

        +
        +

        anything

        +
        +

        right

        +
        +

        n/a

        +
        +

        n/a

        +
        +

        <td><i>anything</i></td>

        +
        +

        <i>anything</i>

        +
        +

        wrong

        +
        +

        anything

        +
        +

        <i>anything</i>

        +
        +

        <td>&lt;i>anything&lt;/i></td>

        +
        +

        <i>anything</i>

        +
        +

        right

        +
        +

        n/a

        +
        +

        n/a

        +
        +

        <td>&lt;i>anything&lt;/i></td>

        +
        +

        anything

        +
        +

        wrong

        +
        +

        <i>anything</i>

        +
        +

        anything

        +
        + +

         

        + +

        This conversion applies to +blank cells and the “error” keyword as well.

        + +

         

        + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +

        fat.CheckFixture

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

        Cell

        +
        +

        ComparisonValue

        +
        +

        Annotation()

        +
        +

        Info()

        +
        +

        <td>&nbsp;</td>

        +
        +

        anything

        +
        +

        info

        +
        +

        anything

        +
        +

        <td><font color="red">error</font></td>

        +
        +

        (causes error)

        +
        +

        right

        +
        +

        n/a

        +
        + +

         

        + +

        Comparison Values Convert to HTML

        + +

         

        + +

        When a comparison value is +used in an annotation, it’s converted to HTML +as described in the annotations +specification.  See that section for +examples.

        + +

         

        + +

        Type Conversion

        + +

         

        + +

        (to do)

        + +

         

        + +

        Converting strings to objects

        + +

        Converting objects to strings

        + +

        Comparing objects

        + +

         

        + +

        Predefined Fixtures

        + +

         

        + +

        Fit includes several predefined +fixtures.  Each +fixture is described in a separate document, +shown in the table below.

        + +

         

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +

        fat.ReferenceFixture

        +
        +

         

        +
        +

         

        +
        +

        Description

        +
        +

        Location

        +
        +

        Result()

        +
        +

        Primitive Fixture

        +
        +

        primitive-fixture.html

        +
        +

         

        +
        +

        Column Fixture

        +
        +

        column-fixture.html

        +
        +

         

        +
        +

        Row Fixture

        +
        +

        row-fixture.html

        +
        +

         

        +
        +

        Action Fixture

        +
        +

        action-fixture.html

        +
        +

         

        +
        +

        Summary Fixture

        +
        +

        summary-fixture.html

        +
        +

         

        +
        + +

         

        + +

        Run Results

        + +

         

        + + + + + +
        +

        fit.Summary

        +
        + +

         

        + +

         

        + +

         

        + +

         

        + +

         

        + +

        (to do)

        + +

         

        + +

        Be sure to include right, wrong, exception, +and ignore counts in ‘check’ +discussion

        + +

         

        + +

         

        + +
        + +
        + +
        + +

        Check

        + +

        Expected values specified +in cells are tested for equality with actual +values extracted from the program under test.

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +

        fat.Equals

        +
        +

        type

        +
        +

        x

        +
        +

        y

        +
        +

        =

        +
        +

        boolean

        +
        +

        true

        +
        +

        TRUE

        +
        +

        true

        +
        +

        integer

        +
        +

        00001

        +
        +

        1

        +
        +

        true

        +
        +

        real

        +
        +

        1000

        +
        +

        1e3

        +
        +

        true

        +
        +

        string

        +
        +

        abc

        +
        +

        ABC

        +
        +

        false

        +
        +

        string

        +
        +

        a b c

        +
        +

        a b c

        +
        +

        true

        +
        + +

        A sequence of values can +be entered and checked +as a single (composite) value.

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +

        fat.Equals

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

        type

        +
        +

        x

        +
        +

        y

        +
        +

        =

        +
        +

        integers

        +
        +

        1, 3, 5

        +
        +

        01,03,05

        +
        +

        true

        +
        +

        integers

        +
        +

        1, 3, 5

        +
        +

        01,05,03

        +
        +

        false

        +
        +

        booleans

        +
        +

        true, true, false

        +
        +

        true, false

        +
        +

        false

        +
        +

        strings

        +
        +

        a , b , c

        +
        +

        a,b,c

        +
        +

        true

        +
        + +

        Domain values can be constructed +from cell contents. +Equality comparisons will be subject +to appropriate domain rules (i.e. delegated to the domain objects.) +

        + + + + + + + + + + + + + + + + + + + + + + + +
        +

        fat.Equals

        +
        +

        type

        +
        +

        x

        +
        +

        y

        +
        +

        =

        +
        +

        date

        +
        +

        Jan 1, 1995

        +
        +

        January 1, 1995

        +
        +

        true

        +
        +

        money

        +
        +

        $10000

        +
        +

        $10,000.00

        +
        +

        true

        +
        + +

        Floating point numbers are checked +to the precision that is normal in the host +language. It is possible for a domain object +to infer precision from the string +representation of expected values. For +example, [?]ScientificDouble +checks +equality to the precision implied by the +number of significant digits in a value.

        + +

        ·         +non-zeros -- 123.45 is 5 digits

        + +

        ·         +zeros between non-zeros -- 100003 is 6 digits

        + +

        ·         +zeros in the fraction +part -- 12.20 is 4 digits

        + +

        ·         +but not leading zeros -- 0001000 is 4 digits

        + +

        ·         +and not exponent digits -- 6.02e23 is 3 digits

        + +

        ·         +left argument (receiver) +controles precision +

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +

        fat.Equals

        +
        +

        type

        +
        +

        x

        +
        +

        y

        +
        +

        =

        +
        +

        real

        +
        +

        123.45

        +
        +

        123.449

        +
        +

        false

        +
        +

        scientific +

        +
        +

        123.45

        +
        +

        123.449

        +
        +

        true

        +
        +

        scientific +

        +
        +

        100003

        +
        +

        100003.1

        +
        +

        true

        +
        +

        scientific +

        +
        +

        100003.1

        +
        +

        100003

        +
        +

        false

        +
        +

        scientific +

        +
        +

        12.20

        +
        +

        12.210

        +
        +

        false

        +
        +

        scientific +

        +
        +

        12.21

        +
        +

        12.210

        +
        +

        true

        +
        + +

        Improperly specified values may throw exceptions +which are reported in the cell +that contains the invalid number. Improper +value detection is only as good as would be +expected in the host language. (We are +assuming that incorrectly +converted values will lead to detected +errors elsewhere.)

        + +

        ·         +xyz is not an integer

        + +

        ·         +10000000000000000000000000 may or may not be an +integer

        + + + + + + + + + + + + + + + + + + + + + +
        +

        fat.Table

        +
        +

        fat.Equals

        +
        +

         

        +
        +

        type

        +
        +

        x

        +
        +

        integer

        +
        +

        200

        +
        +

        integer

        +
        +

        xyz

        +
        + +

         

        + + + + + + + + + + + + + + + + + + + + + +
        +

        fat.Color

        +
        +

        white

        +
        +

        white

        +
        +

        white

        +
        +

        white

        +
        +

        white

        +
        +

        white

        +
        +

        white

        +
        +

        yellow

        +
        + +

        Some character +strings have special meaning outside of type conversion. +

        + +

        ·         +blank -- omit check, +report value (reported in gray letters)

        + +

        ·         +error -- expect +an error

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +

        fat.Table

        +
        +

        fat.Divide

        +
        +

         

        +
        +

         

        +
        +

        x

        +
        +

        y

        +
        +

        divide()

        +
        +

        100

        +
        +

        2

        +
        +

        50

        +
        +

        100

        +
        +

        2

        +
        +

         

        +
        +

        100

        +
        +

        0

        +
        +

        error

        +
        +

        100

        +
        +

        0

        +
        +

         

        +
        + +

         

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +

        fat.Color

        +
        +

        white

        +
        +

        white

        +
        +

        white

        +
        +

        white

        +
        +

        white

        +
        +

        white

        +
        +

        white

        +
        +

        white

        +
        +

        green

        +
        +

        white

        +
        +

        white

        +
        +

        gray/white

        +
        +

        white

        +
        +

        white

        +
        +

        green

        +
        +

        white

        +
        +

        white

        +
        +

        gray/white

        +
        + +

        The framework looks for parse support in different places. +

        + +

        ·         +fixture

        + +

        ·         +domain object

        + +

        ·         +type adapter

        + +

        The framework will allow fixtures to implement custom +parsing.

        + +

        ·         +yea = true

        + +

        ·         +nay = false

        + +
        + +
        + +
        + +

        Fixture

        + +

        By default cells are processed +in order, by table, by row within tables, and by cell +within rows. Distinct routines handle sequencing +(plural) and interpretation (singular).

        + +

        ·         +doTables -- sequence +tables within a document

        + +

        ·         +doTable -- interpret a table

        + +

        ·         +doRows -- sequence +rows within a table

        + +

        ·         +doRow -- interpret a row

        + +

        ·         +doCells -- sequence +cells within a row

        + +

        ·         +doCell -- interpret a row

        + +

        The default interpretation of a cell is to +mark it as ignored.

        + +

        Cells contain givens or expected +results. The fixture is responsible for distinguishing givens from expected +results, checking +expected results against actuals, +and indicating the result with the background +annotation as follows.

        + +

        ·         +white -- no check +wanted (blank input)

        + +

        ·         +green -- right: expected +equals actual

        + +

        ·         +red -- wrong: expected +not equal actual

        + +

        ·         +yellow -- exception: +trouble computing actual +or comparing result

        + +

        ·         +gray -- ignore: desired check +not possible

        + +

        Fixtures cooperate to count +the number of each result.

        + +

        ·         +counts accumulate +between tables

        + +

        ·         +counts are +summarized as "# right, # wrong, # exceptions, +# ignores".

        + +

        ·         +runner fixtures (e.g. AllFiles) can +control accumulation +of counts

        + +

        Fixtures cooperate to accumulate +state that can be summarized at any point in +the processing of a document. +

        + +

        ·         +state variables

        + +

        ·         +state lifetime

        + +

        ·         +state summary

        + +
        + +
        + +
        + +

        PrimitiveFixture +

        + +

        The primitive fixture does not depend on TypeAdapter. Type specific +functions handle all checking. +

        + +

        ·         +checkBoolean +

        + +

        ·         +checkInteger +

        + +

        ·         +checkFloat +

        + +

        ·         +checkString +

        + +
        + +
        + +
        + +

        ColumnFixture +

        + +

        A column fixture distinguishes givens from +expected values by the form of the column +head.

        + +

        ·         +name is setter or field

        + +

        ·         +name() is getter or field

        + +

        ·         +camel case +-- present value ( ) = presentValue()

        + +

        ·         +deprecate execute() +

        + +
        + +
        + +
        + +

        RowFixture +

        + +

        A row fixture expects all rows to be expected +values. The fixture is assumed to have access +to actual rows which +it pairs with expected rows.

        + +

        ·         +name is field or getter

        + +

        ·         +name() is getter

        + +

        ·         +camel case +

        + +

        Rows are matched by comparing +just enough values from the left most columns +to get a unique match.

        + +

        ·         +some given, none actual +-- missing row

        + +

        ·         +none given, some actual +-- surplus rows

        + +

        ·         +one given, one actual +-- check +remaining columns

        + +

        ·         +many given, many actual +-- match on more columns +

        + +

        Missing and surplus rows are marked as such +in their first column

        + +

        ·         +each counts +as one wrong

        + +

        ·         +surplus rows added to table in gray

        + +
        + +
        + +
        + +

        ActionFixture +

        + +

        An action fixture distinguishes given from +expected values based on keywords in the first +column.

        + +

        ·         +enter -- put given in setter or field

        + +

        ·         +check +-- check +value with getter or field

        + +

        ·         +press -- call action +(no check +other than for execptions)

        + +

        ·         +start -- new actor +

        + +

        An actor represents some interface +state such as the currently +active window. The actor +gives meaning to many of the words in the second +column (field to be entered and buttons to be +pressed).

        + +

        ·         +actor persists +between tables

        + +

        ·         +initial actor +is action fixture (subclass) +itself

        + +

        ·         +start with no argument specifies +initial actor

        + +

        Start could have various meanings depending +on the nature of the interface being modeled.

        + +

        ·         +create a new actor +

        + +

        ·         +return to an existing actor +

        + +

        Other actions, like press, can +change the current +actor.

        + +

        ·         +replace the current +actor with a new actor +

        + +

        ·         +replace the current +actor with another preexisting actor +

        + +

        ·         +restore the previous actor +

        + +

        Subclasses of action +fixture can add new action +words.

        + +

        ·         +camel case +

        + +
        + +
        + +
        + +

        Runner

        + +

        A runner creates top-level Fixtures and +provides them with parsed documents to be +annotated.

        + +

        ·         +top-level fixture is instance +of Fixture

        + +

        A runner retrieves and disposes of documents +as appropriate to its environment. The FileRunner reads and +writes html files.

        + +

        ·         +input-file only -- default output

        + +

        ·         +input-file output-file -- specific +output

        + +

        ·         +input-directory +only -- default output in directory

        + +

        ·         +input-directory +output-directory -- default outputs in specific +directory

        + +

        ·         +index.html result summaries

        + +

        ·         +- is standard in/out

        + +

        A runner signals the presence of errors to +its environment so that subsequent processing can +be triggered.

        + +

        ·         +exit status is sum of wrong and exceptions +up to 255

        + +

        ·         +main is factored +to simplify [?]RunnerFixtures +

        + +

        A runner establishes run specific +state that may influence loading and/or configuration +of the program under test.

        + +

        ·         +[?]AssemblyPath ???

        + +

         

        +-! \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteFitAcceptanceTests/TestFixtures/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteFitAcceptanceTests/TestFixtures/properties.xml new file mode 100644 index 0000000..b08e34d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteFitAcceptanceTests/TestFixtures/properties.xml @@ -0,0 +1,14 @@ + + + true + docs + true + true + true + true + true + true + true + 1155243203336 + -1217241164486364196 + diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteFitAcceptanceTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/SuiteFitAcceptanceTests/content.txt new file mode 100644 index 0000000..c949e8d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteFitAcceptanceTests/content.txt @@ -0,0 +1,596 @@ +!- +
        + +

        Fit Specification, +v1.1

        + +

         

        + +

        Fit is a tool for improving communication +between customers, programmers, and +testers.  It allows the customer to describe +his or her requirements in a way that can be checked +against the actual program.

        + +

         

        + +

        The technique Fit uses is called +"specification +by example."  It allows customers to +create a document +with tables that describe specific +examples of how the software should work.  Fit looks at the document +and checks to +see if the software works the way the tables say it should.

        + +

         

        + +

        Fit uses small programs, called +"fixtures," to connect +tables to software.  Programmers on the development team are responsible +for creating those fixtures.  Customers +are responsible for creating the tables.  +Testers work with both groups of people to help make sure that all situations +are adequately covered.  The three groups +work together, interactively, to create +great software.

        + +

         

        + +

        This document, and the documents +it references, describes +Fit using specification +by example.  It is, itself, an example of how to use Fit.  If all the “pass” cells +in the table below are colored green, then you +can be confident +that your copy of Fit meets this specification.

        + +

         

        + +

        Using Fit to test itself, as we do here, leads to circular +logic that can +be unraveled more easily by the computer than +by humans.  To avoid a headache, +ignore the fact that this document +is written in HTML or that the tables use Fit fixtures.  Instead, just think of it as a regular document--one +that happens to be colored green and red.

        + +

         

        + +

        Functional changes +to Fit that are new in this version of the spec +are highlighted yellow.  Layout, formatting, and other non-functional +changes to the specification +are not highlighted.

        + +

         

        + +

        Details

        + +

         

        + +

        Fit knows how to do these things:

        + +

         

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +

        fat.ReferenceFixture

        +
        +

         

        +
        +

         

        +
        +

         

        +
        +

        Description

        +
        +

        Location

        +
        +

        Result()

        +
        +

        Note

        +
        +

        Parse HTML documents

        +
        +

        parse.html

        +
        +

        pass

        +
        +

         

        +
        +

        Modify HTML documents

        +
        +

        annotation.html

        +
        +

        pass

        +
        +

         

        +
        +

        Interpret tables using fixtures    

        +
        +

        fixtures.html

        +
        +

         

        +
        +

        incomplete

        +
        +

        Provide a command-line interface

        +
        +

        cli.html

        +
        +

         

        +
        +

        incomplete

        +
        + +

         

        + +

        Click the links for details about how Fit +does each of these things.  This specification +is a work in progress and the “fixtures” and “command-line +interface” portion are incomplete.  Implementers: you may ignore these sections +for now.

        + +
        + +

         

        + +

        Fit is available for many programming languages.  The sections +above apply to all implementations of Fit.  +Extensions specific +to this implementation of Fit are described +here:

        + +

         

        + + + + + + + + + + + + + + + + + +
        +

        fat.ReferenceFixture

        +
        +

         

        +
        +

         

        +
        +

        Description

        +
        +

        Location

        +
        +

        Result()

        +
        +

        Implementation-specific + extensions

        +
        +

        extensions.html

        +
        +

        pass

        +
        + +

         

        + +

        Errata

        + +

         

        + +

        Known errors and omissions, to be fixed in a future version:

        + +

         

        + +
          +
        • The + <wiki> tag is not specified.
        • +
        • Parsing-related + errors are described but the errors + aren’t specified.
        • +
        • Nested + tables are not specified
        • +
        • Argument + list (next to fixture name) is not specified.
        • +
        • Parser + can handle any XML heirarchy, but + only <table>, <tr>, + <td> is specified.
        • +
        • Files + are expected to be CP1252, but this is + not specified.
        • +
        + +

        To Do

        + +

         

        + +

        To look at in a future release:

        + +

        ·        +Why is info text coming +out with a line break when this spec is +run?  (Because +Word creates empty cells +with this markup: “<p>&nbsp;</p>”.  Accomodate this?)

        + +
          +
        • Possible + bug: when a variable column has a blank cell + (in a ColumnFixture), the value is filled in but + it isn’t shown in grey.
        • +
        • More + flexibility in charset handling.
        • +
        + +

         

        + +

        Possible feature changes:

        + +
          +
        • Add + “blank” keyword?
        • +
        • make fat.ReferenceFixture + a standard fit fixture?
        • +
        • Provide + a way for ColumnFixture to easily annotate a cell + (including when it passes)
        • +
        • Data + setup fixture, similar to RowFixture[?]
        • +
        + +

         

        + +

        Change History

        + +

         

        + +

        Changes in version 1.1:

        + +

        ·        +HTML to text: Added support for class +attribute in MS Word <p> tag parsing

        + +

        ·        +HTML to text: Clarified handling of +leading and trailing line breaks

        + +

        ·        +Text to HTML: Changed handling of “backwards +line feed”

        + +

        ·        +Fixture loading: Added specific +error messages when fixtures don’t load

        + +

        ·        +Standard annotations: Changed all HTML to +put quotes around color attributes

        + +

        ·        +Standard annotations: Changed “error” and +“info” annotations to convert new text to +HTML.

        + +

        ·        +Standard annotations: Changed “wrong” and +“error” annotations to strip mark-up from original cell.

        + +

        ·        +Standard annotations: Changed “error” annotation to use standard font size +for error message.

        + +

        ·        +Malformed HTML Parsing: Changed unclosed table, tr, and td tags to generate an error.

        + +

        ·        +ColumnFixture: +Changed headers to allow multiple words.  (not yet specified.)

        + +

        ·        +Fixture +loading: Added argument list by fixture name.  (not yet specified.)

        + +

        ·        +Parsing: +Added support for nested tables.  +(not yet specified.)

        + +

         

        + +

        Changes in version 1.0:

        + +

        ·        +Rewrite of the spec.

        + +

        ·        +HTML to text: Changed &nbsp; entity to combine +with other leading and trailing whitespace.

        + +

        ·        +HTML to text: Changed non-breaking space +character to not +combine with other internal whitespace.

        + +

        ·        +HTML to text: Added conversion +of <br> and <p> tags to line-feed characters.

        + +

        ·        +HTML to text: Added conversion +of “smart quotes” to regular quotes.

        + +

        ·        +Text to HTML: Added conversion +of line-feed characters +to <br> tags.

        + +

        ·        +Text to HTML: Added conversion +of adjoining spaces to &nbsp; entities.

        + +

         

        + +

        Initial version:

        + +

        ·        +Experimental specification +created by Ward Cunningham +and Jim Shore.

        + +

         

        + +

         

        + +
        + +

         

        + + + + + +
        +

        fit.Summary

        +
        + +

         

        + +-! +---- +!contents diff --git a/fitnesse/FitNesseRoot/FitNesse/SuiteFitAcceptanceTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/SuiteFitAcceptanceTests/properties.xml new file mode 100644 index 0000000..f05fbab --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/SuiteFitAcceptanceTests/properties.xml @@ -0,0 +1,14 @@ + + + true + docs + true + true + true + true + true + true + true + 1155243419139 + -2818257665539849994 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AcceptanceTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AcceptanceTests/content.txt new file mode 100644 index 0000000..2350bd7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AcceptanceTests/content.txt @@ -0,0 +1,41 @@ +!1 Automated Acceptance Tests: Building the Right Code +!-FitNesse-! automated acceptance tests are power tools for fixing a broken requirements process. Skillfully applied, such tests make it possible to avoid the problems of ProjectDeathByRequirements. (Note: if you have not yet done so, you should probably first get a quick intro on !-FitNesse-! tests at the TwoMinuteExample.) + +!2 The Advantages of !-FitNesse-! Tests +!-FitNesse-! automated acceptance tests have several advantages over many kinds of traditional black-box, GUI-based functional tests: + + * !-FitNesse-! tests can give us feature feedback '''very early''' in the project. In fact, the tests ought to be written '''first''', so programmers can ''code to'' the tests. + * !-FitNesse-! tests can give us feature feedback '''very frequently'''. They can be run manually or automatically by anyone with web access to the server, as frequently as required. Every week, every day, every hour in a crunch. + * !-FitNesse-! tests are '''deterministic''': they either run green or red. If they run green for a given requirement, either the requirement is done and we move on to others, or the set of tests is not yet exactly right, in which case we refine them. Either way, we are '''successively refining''' the system in an orderly way. With each new test running green, we can all see the system getting better, more valuable, closer to what we need. + * Being based on example data, !-FitNesse-! tests '''exercise more paths through the business logic'''. When you use !-FitNesse-!, you run less risk of missing important features or functional behavior. + +!2 Acceptance Tests vs. Unit Tests +If you are familiar with the emerging [[xUnit][http://encyclopedia.thefreedictionary.com/XUnit]] style of automated unit testing (e.g., using [[JUnit][http://www.junit.org]] for Java, or [[NUnit][http://www.nunit.org]] for C#), you may well wonder why both kinds of testing are necessary, and how they work together. Let's discuss that. + +!3 [[xUnit][http://encyclopedia.thefreedictionary.com/XUnit]]: Building the ''Code Right'' +Automated unit tests (or programmer tests, as they are increasingly called), are white-box tests that describe and verify very low-level behavior. Especially when working test-first, programmers rely on such tests to make sure that the design is sound, and that there are no defects. Such tests are built by and largely for programmers, and can be independent of functionality. + +If a team using [[JUnit][http://www.junit.org]] or [[NUnit][http://www.nunit.org]] to do Test-Driven Development is still hampered by a broken requirements process, they can easily end up building robust, lean, well-factored code with no business value. (This is, in fact, happening with increasing frequency.) + +!3 !-FitNesse-!: Building the ''Right Code'' +!-FitNesse-! automated tests are about building the right code in the first place: the code with the most business value. While programmers may be involved in writing such tests, they are not just for programmers. !-FitNesse-! tests are especially for customers, business analysts, testing professionals, support staff, management, and all other stakeholders who need evidence that the project is producing solid return on investment. + +!3 "Running, Tested Features" +Ron Jeffries articulates the idea that the ultimate software project metric, the one closest to ROI, is '''[[Running, Tested Features][http://ronjeffries.com/xprog/articles/jatrtsmetric/]]'''. How many RTF did we deliver last iteration, or last month, or last release? '''Only a tool like '''!-FitNesse-!''' can answer these questions.''' + +Without a solid tool for automated acceptance tests, you cannot know how many RTF you produce per unit time, so perhaps you cannot easily determine what your project ROI is. Perhaps your team is headed for ProjectDeathByRequirements. + +!2 Consider Using Both Tools +If you use !-FitNesse-! without using [[JUnit][http://www.junit.org]] or [[NUnit][http://www.nunit.org]] to test-drive and refactor your code, you may end up with tremendous business value, but rotten, buggy code. Even if the bugs don't kill you, this is short-sighted; it's a way of sacrificing release 3 to release 1. You have to keep the code lean and extensible to prevent code rot. Otherwise, your rotten codebase will need to be rewritten from scratch, long before it has exhausted its business value. + +With both tools, you can balance production and production capacity. You can deliver the features that produce highest ROI, while producing robust, clean, extensible code. You might find that you get addicted to the early, frequent feedback that automated tests provide. Your whole team could get addicted to Building the Right Code, and Building the Code Right. + +!2 Summary + * !-FitNesse-! automated acceptance tests have several advantages over traditional functional testing. These advantages are good both for requirements management and for feature verification. + * Only automated acceptance testing (such as that provided by !-FitNesse-!) enables you to measure [[Running, Tested Features][http://www.xprogramming.com/xpmag/jatRtsMetric.htm]], which is a key metric for measuring software project progress and success. + * !-FitNesse-! automated acceptance testing is a natural complement to [[xUnit][http://encyclopedia.thefreedictionary.com/XUnit]]-based unit testing. The former helps you build the right code, while the latter helps you build the code right. Consider using both tools. + +!2 Learning More +If you have not yet done so, check out the TwoMinuteExample. For more information on how teams can work together with !-FitNesse-! tests to deliver better systems, see DeliveringTheRightSystem. + +If you are ready to start creating !-FitNesse-! pages and test tables, check out how to [[work with !-FitNesse-! wiki pages][.FitNesse.UserGuide.FitNesseWiki]] and [[create acceptance tests][.FitNesse.UserGuide.WritingAcceptanceTests]]. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AcceptanceTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AcceptanceTests/properties.xml new file mode 100644 index 0000000..4d60a8b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AcceptanceTests/properties.xml @@ -0,0 +1,7 @@ + + + + What are the advantages of FitNesse automated acceptance tests? + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/ApplicationArchitecture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/ApplicationArchitecture/content.txt new file mode 100644 index 0000000..ddf2f4c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/ApplicationArchitecture/content.txt @@ -0,0 +1,81 @@ +FitNesse is a wiki server. It's also a test execution engine. + +In this section the application structure is described. The application can be divided in four main components: + + * [[Wiki server][#wikiserver]] + * [[Test execution engine][#testsystem]] + * [[System under test][#systemundertest]] (SUT) + * [[Reporting engine][#testreporting]] + +{{{ ,---------------. + | Wiki Server |<-------------. + `---------------' v + | ,-------------. + | | Reporting | + v `-------------' + ,---------------. ^ + | Test System |--------------' + `---------------' + | + | + v +,---------------------. +| System Under Test | +`---------------------'}}} +The wiki server is the component responsible for serving the web pages and handling user requests. One of the operations is starting a test run. This will start the system under test with some extra code: the Fit or Slim server. The output of the test run is stored to serve the page and test history pages.Next to the main components, there are a few extra features: + + * JUnit support + * [[System configuration][#systemconfiguration]] + +!2 Wiki server !anchor wikiserver +The wiki server is the first thing a user sees when starting FitNesse. The most notable class is the Responder. Responders can be configured via the [[configuration file][ + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/CommandLineArguments/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/CommandLineArguments/content.txt new file mode 100644 index 0000000..36de67e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/CommandLineArguments/content.txt @@ -0,0 +1,29 @@ +!1 Command line arguments + +A subset of configuration options can be provided through the command line. Command line properties take precedence over properties set in the configuration file and system properties (''-Dproperty=value''). + +| ''Command!- -!line!- -!parameter'' | ''Configuration!- -!property'' | ''Default'' | ''Description'' | +| {{{-p }}} | Port | 80 | The port number that FitNesse listens to. The default is 80 because this is the port that internet browsers use by default. If your machine already has a web server running, it will be using port 80, so FitNesse should be set up to use a different port, like 8080.{{{java -jar fitnesse-standalone.jar -p 8080}}} | +| {{{-d }}} | !-RootPath-! | . | The directory in which FitNesse expects to find its page root. It defaults to the current directory ('.'). | +| {{{-r }}} | !-FitNesseRoot-! | !-FitNesseRoot-! | The directory in which FitNesse looks for top level pages. | +| {{{-v }}} | !-LogLevel=verbose-! | normal | Set the system log level to verbose. | +| {{{-l }}} | !-LogDirectory-! | ''no logging'' | If this argument is not present, then FitNesse will not create access log files. Otherwise it will create access log files in the specified directory. See LogFiles. Please note that access logging is different from system logging. | +| {{{-e }}} | !-VersionsController.days-! | 14 | Sets the expiration date for page versions. Any page version older that the number of days specified by this argument are considered to have expired. Expired pages are subject to deletion. Just ''when'' they are deleted is not specified. | +| {{{-o }}} | !-OmittingUpdates-! | ''install updates'' | When a new version of FitNesse is run for the first time, it checks the existing environment to see if any changes need to be made in order for the existing environment to be compatible with the new version of FitNesse. For example, if we change the icon on the upper right, FitNesse might go to the http://fitnesse.org/files site and automatically download the new icon. Or if the format of the properties files, or of the wikipages changes, FitNesse might run through all the existing pages and update their format. This process is called ''updating''. Sometimes you don't want updating to take place. If so, then use the '''-o''' argument to disable updating. | +| {{{-a authentication-parameter}}} | Credentials | ''none'' | Enable authentication. ---- If the authentication-parameter is of the form "username:password" then single user authentication is enabled, and just that one user will be known to the system. ---- If the authentication-parameter is of the form "filename" then the file will be read. It will consist of any number of lines of the form username:password and all those users will be known to the system. See PasswordFile for more information | +| {{{-i}}} | !-InstallOnly-! | ''no'' | Install only, do not run fitnesse after install. | +| {{{-c }}} | Command | ''none'' | Run a Rest Command and then exit. You can find more information on the -c options at RestfulServices. | +| {{{-b }}} | !-RedirectOutput-! | ''stdout'' | redirect command output. This is most useful in conjunction with the ''-c'' option | +| {{{-f }}} | n.a. | plugins.properties | Load an alternative configuration file. The file format adhere's to the java standard of property files. If this option is not provided, the default file ''plugins.properties'' will be loaded if it exists. | + + +!1 Java system properties + +Some system properties can be used to control and/or to configure FitNesse (-Dproperty=value): + +|''System property'' |''Description''| +|{{{slim.port}}} |If you are using [[Slim][ + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/ConfigurationFile/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/ConfigurationFile/content.txt new file mode 100644 index 0000000..b7d1f9d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/ConfigurationFile/content.txt @@ -0,0 +1,182 @@ +Various plugins are supported by FitNesse. + +!3 Overview +Below are a list of customizations you can make via this plugin architecture. Each plugin will require an entry in the ''plugins.properties'' file. This should be located in the working directory of FitNesse. If the file does not exist FitNesse will run normally. To enable a plugin, create this file, and add the specified entries. All plugins will require complied Java code so make sure that the class path contains an entry to locate your plugins. + +See also: CommandLineArguments. + +!3 Theme +''required property:'' '''!-Theme-! = ''' + +''motivation:'' Customize the look and feel to match your liking. See WikiTheming for details. + +!3 Context root +''required property:'' '''!-ContextRoot-! = ''' + +''motivation:'' Customize the root url of !-FitNesse-!. This is convenient if !-FitNesse-! is running behind a proxy server. + +!3 Wiki Page Factory +''required property:'' '''!-WikiPageFactory-! = ''' + +''motivation:'' By default, wiki pages are stored as files on a file system (using the !-FileSystemWikiPage-! class). Providing a custom wiki page plugin allows pages to be stored using other means such as a database. Alternatively, !-FileSystemWikiPage-! can be extended to provide custom behavior when pages are create, saved, deleted, etc. + +The class specified must implement the ''fitnesse.wiki.!-WikiPageFactory-!'' interface. It must provide a public default constructor or a constructor with the form:''public !-WikiPageFactory-!(Properties properties).'' The Properties define the properties defined in the configuration properties file and on the command line. + +!3 Versions Controller +''required property:'' '''!-VersionsController-! = ''' + +''motivation:'' Custom version management for file system pages. + +By default FitNesse makes backups of pages (as zip files). This property can be used to define version management for the wiki pages. By default FitNesse supports a Git based versions controller (!-fitnesse.wiki.fs.GitFileVersionsController-!) and a simple implementation that does not track changes (!-fitnesse.wiki.fs.SimpleFileVersionsController-!). Custom versions controllers can be defined, as long as they implement the !-fitnesse.wiki.fs.VersionsController-! interface. + +!3 Recent Changes +''required property:'' '''!-RecentChanges-! = ''' + +''motivation:'' If you have a custom versions controller installed, it's nice to see those changes on the recent changes page + +By default FitNesse maintains a page ([[!-RecentChanges-!][.RecentChanges]]) that keeps track of changes made to the wiki. If you're using Git versioning, it's much more convenient to just list the changes from the SCM, instead of the ones maintained in the files (let alone the potential merge conflicts). For Git, !-fitnesse.wiki.fs.GitFileVersionsController-! supports the !-fitnesse.wiki.RecentChanges-! interface, so changes of the repository can be displayed, instead of the ones maintained in the !-RecentChanges-! file. + +!3 Responders +''required property:'' '''!-Responders-! = [,]''' + +''motivation:'' Allows functional customization. With this plugin you can customize the way FitNesse responds to HTTP requests. + +The property provided should be a comma separated list of key:value pairs, where value is the name of a class that implements ''fitnesse.Responder''. The key is used in the URL to designate which responder to invoke. An example responder plugin might be an !-RssResponder-! that would generate RSS feeds for wiki page updates. To do this you would first create the !-RssResponder-! to generate the RSS. Then add the plugin property !style_code[''!-Responders=rss:your.package.RssResponder-!'']. Then to invoke it you would use a URL like !style_code(''!-http://fitnesse.org/RecentChanges?responder=rss-!'') to get a feed on all the changes made to the [[!-RecentChanges-!][.RecentChanges]] page. + +!4 Disabled Responder +The !-DisabledResponder-! is provided as a way to turn off at a very deep level other responders. Using the Responders property in the !style_code(plugins.properties), you can disable any existing responder by defining it to use the !-DisabledResponder-! instead. For example, the following line, will disable the addChild and new responders. + +Responders =addChild:fitnesse.responders.DisabledResponder,new:org.fitnesse.responders.DisabledResponder + +!3 Authenticator +''required property:'' '''!-Authenticator-! = ''' + +''motivation:'' Custom security scheme. The class provided must extend the fitnesse.authentication.Authenticator class. The class will be instantiated and asked ''isAuthenticated(String username, String password)'' when ever authentication is required. See SecurityDescription for more information on security. + +!3 !-Symbol Types-! +''required property:'' '''!-SymbolTypes-! = [,''' + +''motivation:'' Restrict the content that is saved on wiki pages. (Damn spammers!) + +The classes supplied must extend ''!-fitnesse.responders.editing.ContentFilter-!''. !-ContentFilter-! is an interface that declares one method: '''!-boolean isContentAcceptable(String content, String pageName)-!'''. When ever user attempts to save a page, ''!-isContentAcceptable()-!'' is invoked and the content is saved only if ''true'' is returned. + +!3 !-Slim Tables-! +''required property:'' '''!-SlimTables-! = [,
        ]''' + +''motivation:'' Allow for custom SLiM table types to be supported. + +There may be certain (rare) situations where the default table types are not sufficient. This hook allows for custom SLiM table types. A custom table must extend fitnesse.slimTables. + +!3 !-Custom Comparators-! +''required property:'' '''!-CustomComparators-! = [,]''' + +''motivation:'' The Slim protocol is all String values. It means that comparison of an expected and actual result for complex datatypes is limited to String equality or Regular Expression matching. If that is not sufficient, a Custom Comparator can do more sophisticated comparisons. Once registered, a Custom Comparator is triggered by its prefix, followed by a colon, in front of the expected value. + +Example Comparator implementation: + +{{{ +public class JSONAssertComparator implements CustomComparator { + @Override + public boolean matches(String actual, String expected) { + try { + JSONAssert.assertEquals(expected, actual, false); + return true; + } catch (JSONException e) { + throw new RuntimeException(e.getMessage(), e); + } + } +} +}}} + +Example plugins.properties: + +{{{ +CustomComparators = json:com.acme.JSONAssertComparator +}}} + +Example !-ScriptTable-! usage: + +{{{ +|script|Customer | +|check |get|cust1|json:{id:cust1,name:"John Doe"}| +}}} + +!3 !-Test Systems-! +''required property:'' '''!-TestSystems-! = [,]''' + +''motivation:'' Allow for custom test systems to be supported. + +In case there are situations where you can not get your tests working with the default test systems (Fit and Slim), you have the ability to define custom test systems. Classes should implement the !-fitnesse.testsystems.TestSystemFactory-! interface. + +!3 !-Formatters-! +''required property:'' '''!-Formatters-! = [,]''' + +''motivation:'' Allow for extra reporting facilities during test execution. + +Classes should implement the !-fitnesse.reporting.Formatter-! interface. + +!3 !-Plug-ins-! +''required property:'' '''!-Plugins-! = [,]''' + +''motivation:'' Register multiple Responders, symbol types, !-WikiPage-! factories, test systems, Slim tables or comparators from a single Java class, instead of multiple entries in plugins.properties. + +Please also have a look at the page on WritingPlugins. It provides an alternative (simpler) way to register plugins by using the Java Service loader facility. + +Plugins classes can provide one or more of the following methods to register components: + + * '''registerResponders(!-ResponderFactory-! responderFactory)''' - register responders using ''!-ResponderFactory.addResponder(String key, Class responderClass)-!'' + * '''registerSymbolTypes(!-SymbolProvider-! symbolProvider)''' - register wiki symbol types using ''!-symbolProvider.add(SymbolType symbolType)-!'' + * '''registerWikiPageFactories(!-WikiPageFactoryRegistry-! wikiPageFactoryRegistry)''' - register page factories used for specific sub pages using ''!-wikiPageFactoryRegistry.registerWikiPageFactory(WikiPageFactory wikiPageFactory)-!'' + * '''registerTestSystemFactories(!-TestSystemFactoryRegistry-! testSystemFactoryRegistry)''' - register test system factories using ''!-testSystemFactoryRegistry.registerTestSystemFactory(String name, TestSystemFactory testSystemFactory)-!'' + * '''registerSlimTableFactories(!-SlimTableFactory-! slimTableFactory)''' - register Slim table factories using ''!-slimTableFactory.addTableType(String nameOrPrefix, Class tableClass)-!'' + * '''registerCustomComparatorRegistries(!-CustomComparatorRegistry-! customComparatorRegistry)''' - register custom comparators for checks done by the Slim test system using ''!-customComparatorRegistry.addCustomComparator(String prefix, CustomComparator customComparator)-!'' + * '''registerFormatters(!-FormatterRegistry-! formatterRegistry)''' - register custom formatters using ''!-formatterRegistry.registerFormatter(Class formatterClass)-!'' + +Plugins are instantiated by FitNesse's !-ComponentFactory-!. By doing so they can support either one of those constructors: + + * Plugin(!-ComponentFactory-! componentFactory) + * Plugin(Properties properties) + * Plugin() + +!1 Other properties + +There are more properties which can be used to tweak parts of FitNesse: + + * '''newpage.default.content''' - default page content for an empty page, in case you're not creating a new page based on a template page. + * '''VersionsController.days''' - number of days to keep old page versions around when using the Zip file based versions controller. + * '''test.history.days''' - The number of days to keep test results around. Cleaned up after a new test run. + * '''test.history.path''' - Location to store the test results. The default location is ''!-FitNesseRoot-!/files/testResults''. + * Any variable that can be defined on a wiki page. + +The Slim test system has a set of [[custom properties][ + + +Configure FitNesse the way you like. + + +1238527780309 +-4188313721410542901 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/ControllingFitNesseFromTheCommandLine/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/ControllingFitNesseFromTheCommandLine/content.txt new file mode 100644 index 0000000..53ef2f0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/ControllingFitNesseFromTheCommandLine/content.txt @@ -0,0 +1,71 @@ +!3 Motivations + +It is possible to issue single commands to FitNesse from the command line. This is useful when: + * Running test suites from your build scripts (see how this is achieved for Ant [[below][#antIntegration]]) + * Generating XML output from a test execution to a file + +!3 Command Syntax + +You can run any REST command (See RestfulServices) from the command line by using the -c command line option as follows: + +|!style_code(java -jar fitnesse-standalone.jar -c )| + +This starts up fitnesse, runs the command, emits the output to standard out, and then exits. + +Most often you will use this to run tests and/or suites from the command line as follows: + +|!style_code(!-java -jar fitnesse-standalone.jar -c "MyTestPage?test&format=text"-!)| + +The ''text'' format causes a simple summary of the tests to be printed to standard output. It looks like this:{{{ +Starting Test System: slim using fitnesse.slim.SlimService. +. 07:37:29 R:0 W:0 I:0 E:0 JunkPage (JunkPage) 0.124 seconds +X 07:37:29 R:0 W:0 I:0 E:3 ExceptionTest (JunkPage.ExceptionTest) 0.034 seconds +. 07:37:29 R:0 W:0 I:0 E:0 FirstPage (JunkPage.FirstPage) 0.329 seconds +. 07:37:29 R:2 W:0 I:0 E:0 GivWenZen (JunkPage.GivWenZen) 0.528 seconds +F 07:37:30 R:6 W:1 I:0 E:0 HashTablePage (JunkPage.HashTablePage) 0.045 seconds +F 07:37:30 R:1 W:20 I:0 E:8 CanTotalOrder (JunkPage.ImportingPage.CanTotalOrder) 0.623 seconds +X 07:37:30 R:0 W:0 I:0 E:6 JunkPage (JunkPage.JunkPage) 0.083 seconds +. 07:37:30 R:0 W:0 I:0 E:0 JunkTest (JunkPage.JunkTest) 0.884 seconds +F 07:37:30 R:1 W:20 I:0 E:8 CanTotalOrder (JunkPage.PointOfSale.CanTotalOrder) 0.004 seconds +. 07:37:30 R:0 W:0 I:0 E:0 SeeTest (JunkPage.SeeTest) 0.765 seconds +. 07:37:31 R:1 W:0 I:0 E:0 SymbolPage (JunkPage.SymbolPage) 0.198 seconds +. 07:37:31 R:0 W:0 I:0 E:0 TestNothing (JunkPage.TestNothing) 0.923 seconds +X 07:37:31 R:2 W:0 I:0 E:2 TestTableTable (JunkPage.TestTableTable) 1.120 seconds +X 07:37:31 R:0 W:0 I:0 E:4 UseVarPage (JunkPage.UseVarPage) 0.034 seconds +. 07:37:31 R:0 W:0 I:0 E:0 VariableTest (JunkPage.VariableTest) 0.512 seconds +. 07:37:31 R:0 W:0 I:0 E:0 SuiteSetUp (JunkPage.ParentSuite.SuiteChildTwo.SuiteSetUp) 0.321 seconds +. 07:37:31 R:0 W:0 I:0 E:0 TestPage (JunkPage.ParentSuite.SuiteChildTwo.TestPage) 0.432 seconds +. 07:37:31 R:0 W:0 I:0 E:0 SuiteTearDown (JunkPage.ParentSuite.SuiteChildTwo.SuiteTearDown) 0.387 seconds +. 07:37:31 R:0 W:0 I:0 E:0 SuiteSetUp (JunkPage.ParentSuite.SuiteSetUp) 0.712 seconds +. 07:37:31 R:0 W:0 I:0 E:0 TestPage (JunkPage.ParentSuite.TestPage) 0.209 seconds +. 07:37:31 R:0 W:0 I:0 E:0 SuiteTearDown (JunkPage.ParentSuite.SuiteTearDown) 0.314 seconds +. 07:37:31 R:0 W:0 I:0 E:0 SuiteSetUp (JunkPage.ParentSuite.SuiteChildOne.SuiteSetUp) 0.159 seconds +. 07:37:32 R:0 W:0 I:0 E:0 TestPage (JunkPage.ParentSuite.SuiteChildOne.TestPage) 0.265 seconds +. 07:37:32 R:0 W:0 I:0 E:0 SuiteTearDown (JunkPage.ParentSuite.SuiteChildOne.SuiteTearDown) 0.358 seconds +-------- +24 Tests, 7 Failures. 90.409 seconds.}}} +Each line begins with . if the test passes, F if the test fails, or X if the test throws an exception. +The key for the counts is Right, Wrong, Ignored, Exceptions. +The rest should be self explanatory. + +The exit code for the command is 0 unless you run a test with ''text'' formatting, in which case it is the number of failing tests. + +!anchor antIntegration + +!2 Executing Tests from Ant +You can run a test suite with Ant using the following ant task {{{ + + + + + + + + }}} +!note !style_green[You only need to set the port if the default command port (9123) will collide with something.] + +!2 Running Password-Protected Suites or Tests +Some work environments which do not allow FitNesse instances without authentication (as the FitNesse tests may access password-protected databases). +In these cases, the suites and pages will need to be password-protected and authentication must be provided as part of the -c command: + +|!style_code(!-java -jar fitnesse.jar -a [user:pwd or user-file-name] -c "username:password:MyTestPage?test&format=text"-!)| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/ControllingFitNesseFromTheCommandLine/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/ControllingFitNesseFromTheCommandLine/properties.xml new file mode 100644 index 0000000..d30aa8f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/ControllingFitNesseFromTheCommandLine/properties.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/LogFiles/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/LogFiles/content.txt new file mode 100644 index 0000000..c0cd45a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/LogFiles/content.txt @@ -0,0 +1,29 @@ +FitNesse has two different types of logging: system logging and access logging. + +!2 System logging +System logging is performed via ''java.util.logging''. This is the default logging facility bundled with Java. By default only messages with info level and up are logged. The -v option can enable more verbose logging by default. Logging is sent to stderr. + +It's possible to fully customize the logging output, including redirecting it to files. In order to do so, one has to create a log configuration file in accordance to the properties available to the different handlers. See the API documentation for [[!-LogManager-!][http://docs.oracle.com/javase/7/docs/api/index.html?java/util/logging/LogManager.html]], [[!-ConsoleHandler-!][http://docs.oracle.com/javase/7/docs/api/index.html?java/util/logging/ConsoleHandler.html]] and [[!-FileHandler-!][http://docs.oracle.com/javase/7/docs/api/index.html?java/util/logging/FileHandler.html]] for some inspiration. FitNesse by default uses a custom log formatter: ''!-fitnesse.logging.LogFormatter-!''. This formatter provides some simple formatting and does only print log severity and exception stack traces for warning level and up. + +The default log configuration looks like this: + +{{{handlers = java.util.logging.ConsoleHandler +java.util.logging.ConsoleHandler.formatter = fitnesse.logging.LogFormatter}}} +!2 Access file + +If File logging is turned on (with the -l command line argument) then FitNesse will record all accesses in log files. + +A new log file is created every day. + +Log files are named fitnesseyyyymmddhhmmss.log, where yyyymmddhhmmss is the time of the first log entry in the file. + +Each line in the log file records a separate access. They are written in standard (common) web log format. They look like this:{{{ +65.194.52.68 - - [06/Mar/2003:16:33:48 -0600] "GET /FitNesse.UserGuide HTTP/1.1" 200 1965 +65.194.52.68 - - [06/Mar/2003:16:33:49 -0600] "GET /files/images/FitNesseLogoIcon.jpg HTTP/1.1" 200 15026 +65.194.52.68 - - [06/Mar/2003:16:33:54 -0600] "GET /files HTTP/1.1" 404 380 +65.194.52.68 - - [06/Mar/2003:16:34:00 -0600] "GET /files/ HTTP/1.1" 200 650 +65.194.52.68 - - [06/Mar/2003:16:34:00 -0600] "GET /files/images/FitNesseLogoIcon.jpg HTTP/1.1" 200 15026 +65.194.52.68 - - [06/Mar/2003:16:34:04 -0600] "GET /files/logs/ HTTP/1.1" 200 414 +65.194.52.68 - - [06/Mar/2003:16:34:04 -0600] "GET /files/images/FitNesseLogoIcon.jpg HTTP/1.1" 200 15026 +65.194.52.68 - - [06/Mar/2003:16:34:05 -0600] "GET /files/logs/fitnesse20030306163348.log HTTP/1.1" 200 650 +}}} diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/LogFiles/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/LogFiles/properties.xml new file mode 100644 index 0000000..d30aa8f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/LogFiles/properties.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/NetworkSecurity/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/NetworkSecurity/content.txt new file mode 100644 index 0000000..fc19699 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/NetworkSecurity/content.txt @@ -0,0 +1,234 @@ +!2 Protect your servers and your data! +To protect the integrity of your environment it is strongly recommended to encrypt and authenticate the network traffic +between the different FitNesse processes. Both will be achieved with SSL. +Without this + * passwords will be send unencrypted over the network + * your system under test would accept commands from any server which can access it over the network. + * this is especially an issue if the system under test runs in demon mode. + +In addition to this also enable user authentication with a PasswordCipher . + +!4 '''Only with self created certificates you achieve security!''' +SSL requires ''certificates'' which identify uniquely each server. +It just takes 1 minutes to create your own certificates, please take the time to do this. +The certificates in the fitnesse distribution are just there for running junit tests. Never use them for your fitnesse instance. + +!2 1. Creating your private SSL keys and certificates +The below just gives the commands how you can create certificates and how to sign them yourself to get started. +In a professional environment your company might have further guidelines. Please contact your network or security administrator. +If you are new to SSL browse the web to understand how it works. + +A minimum SSL configuration consists of +| | |value used in sample commands |Must be changed by you| +|1|A keystore file per server with the private key of each of your server which has been certified|'''fitnesse.jks''' |No | +|2|A password for this keystore file |'''!-PutYourKeyStorePasswordHere-!'''|Yes | +|3|A truststore file which defines with whom your servers should be allowed to communicate |'''fittrust.jks''' |No | +|4|A password for this truststore file |'''!-PutYourTrustPasswordHere-!''' |Yes | + +The first three must be known by FitNesse at runtime. To do this you expand the class '''fitnesse.socketservice.SslParameters''' +The last one is only required when you want to modify the truststore. For running FitNesse it is not required. + +The tool '''keytool''' is used to generate the keys. It is part of the jdk. + +Below are sample commands to get started. You might add or change values according to your setup. + +!* 1.1 Switch to the directory from which you start fitnesse +cd .. +*! + +!* 1.2 Create your server keys and certificate +keytool -genkey -keyalg RSA -alias selfsigned -keystore '''fitnesse.jks''' -storepass '''!-PutYourKeyStorePasswordHere-!''' -validity 400 +*! +You will be asked for further input. +When asked for your first and last name enter your server name with the domain instead like ''www.fitnesse.org''. +The remaining items don't matter. +When asked for the ''key password'' just press enter. +After this step a new file '''fitnesse.jks''' is in your current folder + +!* 1.3 Protect the '''fitnesse.jks''' with all measures your operating system supports +chmod ... +*! +'''IMPORTANT''': Give only read access to users who need this! +Remove read and write access for anybody else. + +!3 1.4 Tell FitNesse your password and the name and location of the keystore file + +Create the following class and add it to the classpath of FitNesse +!* custom SSL Parameter class +package '''your.package''' +import fitnesse.socketservice.SslParameters; + +public class '''!-YourServerSslParameters-!''' extends !-SslParameters-! { + public '''!-YourServerSslParameters-!'''(){ + super(); + // Below is only for demonstration purpose + // Don't hard code passwords in clear text + // A) Ask the user to enter it each time the system starts. That's the most secure way but often not convenient. + // B) Read it from a file where it is stored obfuscated. + String password = "'''!-PutYourKeyStorePasswordHere-!'''"; + setKeyStorePassword(password); + setKeyStoreFilename("'''fitnesse.jks'''"); + setTrustStoreFilename("'''fitnesse.jks'''"); + } +} +*! + +You can use the same class also for '''!-YourSutSslParameters-!''' in the following steps. + + +!2 2. Secure Communication between the browser and the Wiki Server +Instead of http the communication will be https + +!3 2.1 Add the following to plugins.properties + +!* plugins.properties +!-##-! +!-# Wiki Server uses https-! +wiki.protocol=https +wiki.protocol.ssl.parameter.class='''your.package.YourServerSslParameters''' +*! + +!3 2.2 In your browser +Enter '''https://localhost:port''' in your webbrowser to connect to the wiki server + +If you signed the ''certificates'' yourself your browser will give a security warning. +Accept this warning after you checked the certificate. Add a permanent exception for this certificate to your browser +to avoid that you get this warning each time in the future. + +!3 2.3 Client Authentication +If users have certificates, client authentication may be required. To enable client authentication set the following plugins.properties: + +!* plugins.properties +!-##-! +!-# Wiki Server uses https-! +wiki.protocol=https +wiki.protocol.ssl.parameter.class='''your.package.YourServerSslParameters''' +wiki.protocol.ssl.client.auth='''required''' +*! + +Authorization can be accomplished with client certificates with the creation of a custom Authenticator. The Authenticator has access to the peer dn from the Request. Access can be granted or denied based on the dn. + +!2 3. Secure Communication between the Test System and the System Under Test + +This is currently only supported for the SLIM java client. +FIT and SLIM clients for other programming languages must still be enhanced. + +!3 3.1. Configuring SSL on the Test System +The FitNesse Test System and the FitNesse Wiki server are a single process and share the same SSL configuration +If you have not enabled https for the wiki you have to add the below to configure SSL for the test system. + +!* plugins.properties +wiki.protocol.ssl.parameter.class='''your.package.YourServerSslParameters''' +*! + +!3 3.2. Configuring SSL on the SUT +Either enable this for individual test pages by defining the variable +!* SLIM_SSL + !define SLIM_SSL ('''your.package.YourSutSslParameters''') +*! + +or enable this for all SLIM Test Systems on all pages by adding below to 'plugins.properties'. +This configuration takes precedents above an individual page configuration. + +!* plugins.properties +!-##-! +!-# Enable SSL on the Test Systems -! +slim.ssl='''your.package.YourSutSslParameters''' +*! + +If you use remote debugging and started the SUT manually add the following additional parameter to the command line +!* SSL command line parameter +-ssl '''your.package.YourSutSslParameters''' +*! + + + +!2 4. Troubleshooting SSL configuration + +!3 4.1. Start FitNesse with the following two extra parameters to get more output to identify any issues + * -v + * -Djavax.net.debug=ssl,keymanager + +!* Example +java ''-Djavax.net.debug=ssl,keymanager'' -cp fitnesse-standalone.jar fitnesseMain.FitNesseMain ''-v'' +*! +!3 4.2. Define the following on your test page to get more output from the SUT +!* variables on test pages +!- !define-! SLIM_FLAGS (-v) +!- !define-! COMMAND_PATTERN (java ''-Djavax.net.debug=ssl,keymanager'' -cp %p %m) +*! + +!3 4.3. Define the following properties to speed up troubleshooting +This reduces the number of connection attempts. A test with a faulty configuration is then aborted quicker. +!* plugins.properties +slim.timeout=1 +slim.pool.size=1 +*! + + +!3 4.4. Typical error messages in the output from the SUT +!* Error while executing SLIM instructions: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown +Test System is not trusting the SUT - Add the certificate from the SUZ to the truststore on the server +*! + +!* Error while executing SLIM instructions: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: null cert chain +SUT is not trustig the Test System - Add the certificate from the server to the truststore on the SUT +*! + +!* java.security.NoSuchAlgorithmException: Error constructing implementation ... java.io.IOException: Keystore was tampered with, or password was incorrect +Check the password you provided for the keystore +*! + +!2 5. Configuring SSL for a multi server environment +If your system under test doesn't runs on the same server as your Wiki Server consider the blow setup. + +!* 1.1 Command to create your server keys and certificate +keytool -genkey -keyalg RSA -alias selfsigned -keystore '''fitnesse.jks''' -storepass '''!-PutYourKeyStorePasswordHere-!''' -validity 400 +keytool -export -alias selfsigned -file fitnesse.cer -keystore '''fitnesse.jks''' -storepass '''!-PutYourKeyStorePasswordHere-!''' +*! +You will be asked for further input. +When asked for your first and last name enter your server name with the domain instead like ''www.fitnesse.org''. +The remaining items don't matter. +When asked for the ''key password'' just press enter. + +If you have more then one server on which you run SUT you should do this for each server. +To not overwrite the keystores and certificates change each time the '''fitnesse.jks''' and '''fitnesse.cer''' parameters. + +'''IMPORTANT''': Protect the '''fitnesse.jks''' with all measures your operating system supports! Give only read access to users who need this. +Remove read and write access for anybody else. + + +!* 1.2 Commands to create your trust store +keytool -import -v -trustcacerts -alias '''!-uniqueSUTName-!''' -storepass '''!-PutYourTrustPasswordHere-!''' -file fitnesse.cer -keystore '''fittrust.jks''' +*! +If you have created more than one set of files repeat this command for each '''*.cer''' file but put all in the +same truststore file '''fittrust.jks''' + + +!3 1.3 Configure FitNesse with your certificates +Once you have run these commands you have two types of files in your current directory '''fitnesse.jks''' and '''fittrust.jks''' +Copy both into your FitNesse directoy from which you start FitNesse or your SUT. Make again sure that your '''fitnesse.jks''' +and '''fittrust.jks''' are protected. + +Create the following class and add it to the classpath of FitNesse +!* custom SSL Parameter class +package '''your.package''' +import fitnesse.socketservice.SslParameters; + +public class '''!-YourServerSslParameters-!''' extends !-SslParameters-! { + public '''!-YourServerSslParameters-!'''(){ + super(); + // Below is only for demonstration purpose + // Don't hard code passwords in clear text + // A) Ask the user to enter it each time the system starts. That's the most secure way but often not convenient. + // B) Read it from a file where it is stored obfuscated. + String password = "'''!-PutYourKeyStorePasswordHere-!'''"; + setKeyStorePassword(password); + setKeyStoreFilename("'''fitnesse.jks'''"); + setTrustStoreFilename("'''fittrust.jks'''"); + } +} +*! + +Create identical classes named '''!-YourSutSslParameters-!''' for each server running SUT but give the values of the +'''fitnesse.jks''' you created for each server and add the class to the classpath of the SUT. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/NetworkSecurity/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/NetworkSecurity/properties.xml new file mode 100644 index 0000000..7b73086 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/NetworkSecurity/properties.xml @@ -0,0 +1,11 @@ + + + +HowTo setup https, SSL and security on the network +six42 + + + +SSL, security, administration, https + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/PasswordCipher/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/PasswordCipher/content.txt new file mode 100644 index 0000000..be89b67 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/PasswordCipher/content.txt @@ -0,0 +1,9 @@ +A class used to encrypt password that will be written to a PasswordFile. Here is the interface. +{{{ +package fitnesse.authentication; + +public interface PasswordCipher +{ + public String encrypt(String password) throws Exception; +} +}}} \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/PasswordCipher/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/PasswordCipher/properties.xml new file mode 100644 index 0000000..6279719 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/PasswordCipher/properties.xml @@ -0,0 +1,7 @@ + + + + 20090228113824 + true + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/PasswordFile/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/PasswordFile/content.txt new file mode 100644 index 0000000..5ba7fee --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/PasswordFile/content.txt @@ -0,0 +1,25 @@ +When starting FitNesse you may specify a PasswordFile by using the ''-a'' command line argument. A PasswordFile consists of one username and password per line in the form of '''username:password'''. + +!3 Human Readable Passwords +This simple way to create a password file is to list each username:password pair as plain text in the PasswordFile. However this is not very secure in that anyone who is able to read the PasswordFile will have access to everyones password. Here's an example: +{{{Leonardo:katana +Donatello:bo +Rafael:sai +Michaelangelo:nunchaku}}} +4 users are defined here. Leonardo whose password is Katana, Donatello whose password is bo, Rafael whose password is sai, and Michaelangelo whose password is nunchaka. + +!3 Hashed Passwords +A password hashing program, similar to unix's '''passwd''' command, is provided with FitNesse. The Password program has the following usage: +{{{Usage: java fitnesse.authentication.Password [-f ] [-c ] + -f {passwords.txt} + -c {fitnesse.authentication.HashingCipher} }}} +By using the Password program with default setting and using the same usernames and passwords as above, the file ''passwords.txt'' will be generated with the following content: +{{{!fitnesse.authentication.HashingCipher +Leonardo:VEN4CfBvGCSafZDZNIKh +Donatello:VvkqQdgBBfCCZHzBUo6J +Michaelangelo:VBZ1TiB7HMptQsz3d3do +Rafael:YHVFNHr1fHaIGkLHMTSP}}} +You can see that the passwords have been hashed and are not humanly readable. You may also notice a new line. +!-!fitnesse.authentication.HashingCipher-! +This should be left as is in the file. It tells the program with PasswordCipher to use when hashing the passwords. You may create your own PasswordCipher by implementing the ''!-fitnesse.authentication.PasswordCipher-!'' interface and use it for creating password files using the -c command line argument. + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/PasswordFile/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/PasswordFile/properties.xml new file mode 100644 index 0000000..a80fb55 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/PasswordFile/properties.xml @@ -0,0 +1,7 @@ + + + + 20081020135111 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/JsonProperties/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/JsonProperties/content.txt new file mode 100644 index 0000000..bb60a49 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/JsonProperties/content.txt @@ -0,0 +1,17 @@ +{{{ +{ + "Edit": true, + "Properties": true, + "Prune": false, + "RecentChanges": true, + "Refactor": true, + "Search": true, + "Suite": false, + "Test": false, + "Versions": true, + "WhereUsed": true, + "secure-read": false, + "secure-test": false, + "secure-write": false +} +}}} \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/JsonProperties/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/JsonProperties/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/JsonProperties/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/PageHistoryXml/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/PageHistoryXml/content.txt new file mode 100644 index 0000000..1be966a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/PageHistoryXml/content.txt @@ -0,0 +1,19 @@ +{{{ + + + + FitNesse.SuiteAcceptanceTests.SuiteResponderTests.SuiteMoveResponder.TestSimpleMove + + + Tue Jul 07 11:08:34 CDT 2009 + + FitNesse.SuiteAcceptanceTests.SuiteResponderTests.SuiteMoveResponder.TestSimpleMove?pageHistory&resultDate=20090707110834&format=xml + + 6 + 0 + + ... + + ... + +}}} \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/PageHistoryXml/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/PageHistoryXml/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/PageHistoryXml/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RestfulPackets/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RestfulPackets/content.txt new file mode 100644 index 0000000..25033f9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RestfulPackets/content.txt @@ -0,0 +1,33 @@ +If you access a page with the ?packet responder as in !style_code(http://myFitNesseHost/MyPage?packet) you will get back a JSON packet that represents the tables on that page. Only the tables will be part of the packet, any other text is ignored. The JSON packet begins with an array named !style_code(tables). Each element of that array corresponds to a table on the page. The tables use an indentation style to represent the packets. For example: + +!|Customer| +||name|Bob Someone| +||id|8402| +||addr| +|||Street|555 Witherspoon st.| +|||city|Anyville| +|||state|IL| +|||zip|60083| +||phone|555-1212| + +If you get the packet for this page by accessing http://localhost:${FITNESSE_PORT}/FitNesse.UserGuide.RestfulPackets?packet you will get the following JSON packet: +{{{ +{"tables": [ + {"Customer": + { "addr": + { "Street": "555 Witherspoon st.", + "city": "Anyville", + "state": "IL", + "zip": "60083" + }, + "id": "8402", + "name": "Bob Someone", + "phone": "555-1212" + } + } +]} +}}} + +!3 JSONP +If you'd like to use ''JSONP'' to fetch the packets. (Or any kind of script injection tecnique). You can get fitnesse to return the appropriate format by adding !style_code(&jsonp=some_function) on the end of the url. This will wrap the JSON packet in a function call that looks like this !style_code[some_function({...})] So, for example, try this link: !style_code(http://localhost:${FITNESSE_PORT}/FitNesse.UserGuide.RestfulPackets?packet&jsonp=load_me). + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RestfulPackets/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RestfulPackets/properties.xml new file mode 100644 index 0000000..5452987 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RestfulPackets/properties.xml @@ -0,0 +1,13 @@ + + + true + true + true + true + true + true + true + true + 1235142473765 + -2501072354251645696 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RestfulSuiteXmlFormat/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RestfulSuiteXmlFormat/content.txt new file mode 100644 index 0000000..8eb0b77 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RestfulSuiteXmlFormat/content.txt @@ -0,0 +1,31 @@ +The format for a suite is similar to the format for a test as shown in + SuiteAcceptanceTests + + SuiteWidgetTests.TestBrokenWikiWordLink + critical,slow + + 24 + 0 + 0 + 0 + + + 1022 + + FitNesse.SuiteAcceptanceTests.SuiteWidgetTests.SuiteWidgetTests.TestBrokenWikiWordLink?pageHistory&resultDate=20090820&format=xml + + ... + + + 182 + 0 + 0 + 0 + + + 6234 + + +}}} diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RestfulSuiteXmlFormat/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RestfulSuiteXmlFormat/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RestfulSuiteXmlFormat/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RssFeed/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RssFeed/content.txt new file mode 100644 index 0000000..f6d0b5b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RssFeed/content.txt @@ -0,0 +1,19 @@ +!img-r http://www.reallysimplesyndication.com/mainResponderResources/userlandIcons/xmlCoffeeMug +!c !2 FitNesse supports RSS 2.0 + +The RSS URL has the simple form: + * ''!-http://[myWikiAddress]/[somePage]?responder=rss-!'' + +This will send you a list of all the recent changes for ''[somePage]'' and all pages below. If you omit ''[somePage]'' then you'll get a list of all the recent changes in the whole wiki. + +There is one caveat. Without help FitNesse doesn't know how to build fully qulified URL to it's pages. This will result in bad links in the RSS feed. You can help out by defining the '''RSS_PREFIX''' variable. Here's how: + 1 Goto the root page of your FitNesse site + * use the '''root''' keyword in the URL. !-http://localhost/root-! + 2 Click the '''edit''' button (or add ?edit to the end of the URL) + 3 Define the '''RSS_PREFIX''' variable. + * !-!define RSS_PREFIX {http://www.mysite.com/}-! + + +Example:{{{http://fitnesse.org/FitNesse?responder=rss}}} + +!note !meta Make sure your !-RecentChanges-! page is well formed. If it's corrupted, then the RSS feed responder can crash. \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RssFeed/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RssFeed/properties.xml new file mode 100644 index 0000000..6a30bb3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/RssFeed/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/TestHistoryXml/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/TestHistoryXml/content.txt new file mode 100644 index 0000000..9edd6f1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/TestHistoryXml/content.txt @@ -0,0 +1,13 @@ +{{{ + + + FitNesse.SuiteAcceptanceTests + FitNesse.SuiteAcceptanceTests?pageHistory&format=xml + 16 + 1 + Tue Jun 23 14:49:49 CDT 2009 + Tue Jul 07 13:08:07 CDT 2009 + +... + +}}} \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/content.txt new file mode 100644 index 0000000..c0e1768 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/content.txt @@ -0,0 +1,128 @@ +!-FitNesse-! is a web application, therefore all of it's functions can be accessed by passing it URLs. The structure of !-FitNesse-! urls is very simple. + + * !style_code(http://)''host''!style_code(:)''port''!style_code(/)''resource''!style_code(?)''responder''!style_code(&)''inputs'' + * The ''host'' and ''port'' specify the location of the !-FitNesse-! server. + * ''resource'' is usually the name of the !-FitNesse-! wiki page being referenced. Sometimes it refers to a path below the ''files'' section. It is not used in all urls. + * ''responder'' is the name of the operation to be performed. This is typically something like !style_code(?edit) to edit a page, or !style_code(?properties) to bring up the properties dialog. A responder corresponds roughly to a servlet. + * ''inputs'' is the list of parameters to the operation. As in all URL query strings these are name-value pairs and will be things like !style_code(&format=xml) or !style_code(&dontCreatePage). + * A wiki page can be fetched by leaving the query string blank as in !style_code(http://myHost:myPort/MyWikiPage). + * A responder can be specified by using the ''responder'' input as in: !style_code(http://myHost:myPort/MyWikiPage?responder=edit) instead of !style_code(http://myHost:myPort/MyWikiPage?edit). The former is ''proper'', but the latter has become so idiomatic that it will not be deprecated any time soon. + * The files section of the wiki can be accessed by using the word ''files'' followed by a directory path as in !style_code(http://myHost:myPort/files/images/bob.gif) + * The root page can be accessed by using the word ''root'' instead of the ''page'' as in !style_code(http://myHost:myPort/root) + +!2 Responders +| !meta name | !meta inputs | !meta description | +| addChild | | Creates a new child page beneath the selected page | +| | pageName | The name of the page to be created. | +| | pageContent | The contents of the new page. | +| | pageTemplate | If present must point to a valid wiki page. The new page will have the same properties as the referred page. | +| | pageType | If present must be {Test, Suite, Static} and sets the page type accordingly. Otherwise page type is set based on the name of the page as usual. This option does nothing if the ''pageTemplate'' option is set. | +| compareHistory | | Generates a report comparing two test results. | +| | TestResult_''yyyyMMddHHmmss_rr_ww_ii_xx''.xml | One of the files to be compared. Always two there are. | +| createDir | | Create a new directory in the ''files'' section. The directory will be created below the ''resource'' | +| | dirname | The name of the directory to create | +| deletePage | | Deletes the specified page. | +| | confirmed=yes | Bypasses the confirmation screen. | +| deleteFile | | Deletes a file in the ''files'' section. The ''resource'' is the directory in which the file exists. | +| | filename | the name of the file to be deleted. | +| edit | | returns the edit screen for a wiki page. The ''save'' button invokes the ''saveData'' responder. | +| | redirectToReferer | instructs the ''edit'' responder to pass the ''redirect'' input to the ''saveData'' responder. The input is constructed from the ''Referer'' header and the ''redirectAction'' input and has the form ''referer''?''action''. | +| | redirectAction=action | see above. | +| | nonExistent | Causes the ''edit'' responder to load the edit window with default page contents and changes some message from ''edit'' to ''create'' | +| executeSearchProperties | | Returns a list of pages that match the search criteria | +| | pageType | a list of page types to include in the search {Normal, Test, Suite} or the word "Any" | +| | Suites | a comma seperated list of tags (as used by the ''suite'' responder) to include in the search | +| | Action | a list of actions !-{Edit, Versions,Properties, Refactor, WhereUsed, RecentChanges, Files, Search}-! or the word "Any" to include in the search | +| | !-ExcludeSetUp-! | Exclude setup pages from the search. | +| | !-ExcludeTearDown-! | Exclude teardown pages from the search. | +| | !-ExcludeObsolete-! | Exclude pages with the "skipped" attribute selected from the search. | +| files | | Displays a directory in the ''files'' section. The ''resource'' is the directory to be displayed. | +| getPage | | View the selected page | +| | dontCreatePage | if present, will prevent the responder from attempting to create a page if it doesn't exist. | +| | ''key''=''value'' | If present creates a markup variable with ''key'' as name & ''value'' as value. ''key'' and ''value'' can be any string values. Multiple pairs can be specified. | +| import | | Imports a page hierarchy from a foreign !-FitNesse-! | +| | remoteUsername | The user name to log in as (optional) | +| | remotePassword | The password to use (optional) | +| | remoteUrl | The url to the complete pathname of the parent page to be imported. | +| | autoUpdate | If present, will cause a re-import of changed pages whenever a test is run. | +| importAndView | | imports (if necessary) and views the selected page. | +| movePage | | moves the selected page below a different parent. | +| | newLocation | The full path name of the page that will be the new parent. | +| names | | Displays a list of the pages at the current level. If no page name is supplied, then the list is all the pages at the top level. Otherwise it is the list of direct children (not grandchildren) of the supplied page. | +| | format=json | returns the list as a JSON array | +| | Recursive | prints also child, grand-child, ... pages | +| | !-LeafOnly-! | in combination with the "Recursive" option prints only leaf pages that don't have further children | +| | !-ShowTags-! | prints the tags associated with a page in []-brackets, e.g., [hello][world] | +| | !-ShowChildCount-! | adds the count of children to each page name after a space. | +| new | | Like ''edit'', but used for new pages. | +| | pageTemplate | Define a page to use as a template for the to be created page | +| | pageType | If present must be {Test, Suite, Static} and sets the page type accordingly. Otherwise page type is set based on the name of the page as usual. This option does nothing if the ''pageTemplate'' option is set. | +| packet | | Returns a json packet containing all the tables on the page. See: [[!-RestfulPackets-!][PageHistoryXml and [[!-RestfulTests-!][JsonProperties | +| purgeHistory | | Purges old test history files | +| | days | The number of days of history to preserve | +| raw | | returns the raw wiki-text of the selected page | +| refactor | | Displays the refactoring screen. | +| renameFile | | Renames a file in the ''files'' section. The ''resource'' is the directory that contains the file. | +| | filename | the file to be renamed. | +| | newName | the new name of the file. | +| renamePage | | Renames the selected page. | +| | newName | The new name for the page. Must be a simple wiki word without any dots. You can't use this responder to move a page! | +| rollback | | Rollback the page to the selected version. | +| | version | The version identifier of the version to rollback to. See: ''viewVersion'' | +| rss | | Returns an rss feed for the current page and all it's children. See [[!-RssFeed-!][RestfulSuiteXmlFormat | +| | format=junit | Produces simple jUnit XML format| +| | debug | See test | +| | remote_debug | See test | | +| | suiteFilter | A comma separated list of tags. If present only tests that one or more of these tags will be run. | +| | excludeSuiteFilter | a comma separated list of tags. If present only test that DO NOT have any of these tags will be run. | +| | firstTest | if present, only tests whose full path names are lexigraphically greater (later in alphabetical order) will be run. This is of questionable use since tests are not guaranteed to be run in any particular order. | +| | nohistory | Do not generate test history files when running the suite. Don't use this with format=xml since xml reports depend upon history. | +| | includehtml | If format=xml then this will cause the XML to contain a 'content' tag that holds the HTML of the tested page. Beware, this can lead to !-OutOfMemory-! errors for large suites. | +| | ''key''=''value'' | If present creates a markup variable with ''key'' as name & ''value'' as value. ''key'' and ''value'' can be any string values. Multiple pairs can be specified.| +| symlink | | Creates a symbolic link between pages in the same !-FitNesse-! | +| | removal | If present is the name of a symbolic link to be removed. | +| | rename | If present is the name of a symbolic link to be renamed. | +| | newname | The new name of the symbolic link being renamed. | +| | linkName | If present is the name of a new symbolic link to be added to the page named by the ''resource''. | +| | linkPath | The path that the link refers to. | +| test | | runs a test on the specified page, returns result in html | +| | format=xml | Returns results in XML. See [[!-RestfulTests-!][TestHistoryXml | +| upload | | Upload a new file into the files section. The ''resource'' is the directory into which the new file will be stored. | +| | file | An object of type !style_code(fitnesse.http.UploadedFile) | +| versions | | Returns the form that shows the saved versions of the wiki page | +| viewVersion | | Shows the selected version of the wiki page. | +| | version | The version identifier. The version identifier is just the name of the zip file (without the .zip) that holds the version. The format of this file name is (generally) ''user''-''id''-''yyyyMMddHHmmss'' where user might not be present. | +| whereUsed | | Returns a list of pages that contains references (links) to the selected page | + + * ''nochunk'' can be added to many urls to turn off chunking. This is most useful for test and suite urls when writing programs to parse the output. \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/properties.xml new file mode 100644 index 0000000..6e718f8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/RestfulServices/properties.xml @@ -0,0 +1,10 @@ + + + + + + + +1234653714415 +2484226534369622367 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SecurityDescription/SpnegoAuthentication/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SecurityDescription/SpnegoAuthentication/content.txt new file mode 100644 index 0000000..6d71b02 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SecurityDescription/SpnegoAuthentication/content.txt @@ -0,0 +1,31 @@ +!2 How to enable for Kerberos/Active Directory +!note Not tested as part of the normal build. Use at your own risk. + +Enable this plugin by editing !style_code(plugins.properties) and adding the line: +!style_code(!-Authenticator = fitnesse.authentication.NegotiateAuthenticator-!) + +If using Kerberos on Unix, create a !style_code(jaas-krb5.conf) file with these contents: +{{{ +com.sun.security.jgss.accept { + com.sun.security.auth.module.Krb5LoginModule required + storeKey=true + isInitiator=false + principal="HTTP/your.web.server@YOUR.REALM" + useKeyTab=true + keyTab="/path/to/your/http.keytab" + ; + }; +}}} +Next, define these system properties when running the FitNesse server: + +{{{ +-Djavax.security.auth.useSubjectCredsOnly=false +-Djava.security.auth.login.config=/path/to/jaas-krb5.conf +-Dsun.security.krb5.debug=true +}}} +You can remove the !style_code(krb5.debug) property later, when you know it's working. + +{{{ + * @author David Leonard Released into the Public domain, 2009. No warranty: + * Provided as-is. +}}} diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SecurityDescription/SpnegoAuthentication/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SecurityDescription/SpnegoAuthentication/properties.xml new file mode 100644 index 0000000..d30aa8f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SecurityDescription/SpnegoAuthentication/properties.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SecurityDescription/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SecurityDescription/content.txt new file mode 100644 index 0000000..13ed4eb --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SecurityDescription/content.txt @@ -0,0 +1,28 @@ +!3 Security Overview +Pages can be marked with three levels of security: + +|''secure-read''|Only authenticated users can read the page| +|''secure-write''|Only authenticated users can write the page.| +|''secure-test''|Only authenticated users can test the page.| + +These levels are not hierarchical. secure-write does not imply secure-read. Indeed, the three are completely independent flags that you can set on any page. + +!3 Setting Security +You set the security of a page by going to it's properties and clicking on the appropriate checkboxes. If none of the checkboxes are checked, then the page is completely insecure and anybody can do anything to it. This is the default. + +!3 Security Inheritance +Pages inherit their security from their parent pages. If a parent page has ''secure-read'' then all its children will be protected from reading, even though they don't have ''secure-read'' set themselves. There is no way to relax security in child pages. Where security is concerned, the parents rule. + +!3 Details + * If a unauthenticated user attempts to display a page that has ''secure-read'' set, he will be prompted for his username and password. If he survives this authentication then he will be redirected to the requested page. + * If an unauthenticated user attempts to write a page that has ''secure-write'' set, he will be authenticated before the write is allowed to take place. + * If an unauthenticated user attempts to test a page that has ''secure-test'' set, he will be authenticated before the test is allowed to take place. This works the same for both tests and suites. + * A user must be authenticated to do any kind of refactoring. + * A user must be authenticated to change the properties of a page. + * A user must be authenticated to inspect or change the /files directory structure. However, unauthenticated readers can read files from the /files directory. + * Searching, [[!-WhereUsed-!][SpnegoAuthentication diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SecurityDescription/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SecurityDescription/properties.xml new file mode 100644 index 0000000..081e7f4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SecurityDescription/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SourceCodeControl/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SourceCodeControl/content.txt new file mode 100644 index 0000000..8cc558e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SourceCodeControl/content.txt @@ -0,0 +1,33 @@ +It is relatively simple to marry !-FitNesse-! to your source code control system. By default FitNesse is using a Zip-file based version control mechanism. As soon as a page is updated, a backup is made of the current version and the new version is put into place. Closely tied to the version controller is the .RecentChanges page. This page can be consulted to see who change what. + +The most basic implementation is the !-SimpleFileVersionsController-!. It just stores the content. This class is used as a basis for the !-ZipFileVersionsController-! and [[!-Git versions controller-!][https://github.com/amolenaar/fitnesse-git-plugin]]. + +!2 Description of !-fitnesse.wiki.fs.VersionsController-! +To create a version controller 3 things are important: + + 1 The pages should be stored in a File system. The filesystem based wiki page is currently the only supported page type (but you're free to create your own) + 1 You'll need to implement the !-fitnesse.wiki.fs.VersionsController-! interface. + 1 To support recent changes you'll have to provide a class that implements the !-fitnesse.wiki.RecentChanges-! interface. + +The !-VersionsController-! interface is quite straightforward. All the relevant information is provided through the !-fitnesse.wiki.fs.FileVersion-! interface. This interface provides the file name, content, author and time information. + +The !-VersionsController-! interface consists of the following methods: + +{{{ VersionInfo makeVersion(FileVersion... fileVersion) throws IOException;}}}Create a new version/revision. This is typically called then a page is saved. Each !-FileVersion-! contains infomation about the file that is to be saved, the author and the content. Time information is usually less important. It might be that the author information is taken from the first file version provided (since all changes are to be saved as one commit anyway). Note that, since files are saved in directories, the directories are not mentioned as files-to-be-saved. It's up to the versions controller to take care of this. + +{{{ FileVersion[] getRevisionData(String revision, File... files);}}}Get a specific version of the files requested, given a revision indentifier. The label is either a property also provided by the !-VersionInfo-! object (typically name) or null, denoting the most recent version. + +{{{ Collection history(File... files);}}}Obtain the history of a page. The history is as big as the depth set by setHistoryDepth(int) (see below). + +{{{ void addDirectory(FileVersion... files) throws IOException;}}}Create a new (versioned) directory. This operation is called from the http://files/ handlers. + +{{{ void rename(FileVersion fileVersion, File originalFile) throws IOException;}}}Rename a versioned file. This operation is called from the http://files/ handlers. + +{{{ void delete(FileVersion... files);}}}Delete the page. The author has to be set to the user performing the delete operation. + +{{{ void setHistoryDepth(int historyDepth);}}}Configure the depth for which versions need to be stored (in case of zip files) or the history depth for which changes are fetched (see history() above) + +!2 What happened to !-CmSystem-!? +In older versions the convention was to create a !-CmSystem-! class: a class that fulfilled the !-CmSystem-! protocol. Although this appeared to work fine on paper the real world version had some downsides. For one it was not in control with the saving of the content, now the !-VersionsController-! is in charge of this. Also the protocol was quite cumbersome and it involved Java introspection logic to get it working. Why does your wiki page have to "know" about version control anyway... + +The !-VersionsController-! solution will be more solid can be made to provide generic solutions towards version control in FitNesse. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SourceCodeControl/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SourceCodeControl/properties.xml new file mode 100644 index 0000000..c268d72 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/SourceCodeControl/properties.xml @@ -0,0 +1,11 @@ + + + +Hook up FitNesse to your source code management tooling + + + + +1232134793876 +-8719944065822967118 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/StartingAndStoppingFitNesse/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/StartingAndStoppingFitNesse/content.txt new file mode 100644 index 0000000..a33e23c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/StartingAndStoppingFitNesse/content.txt @@ -0,0 +1,29 @@ +!2 Starting FitNesse +To start Fitnesse, invoke the fitnesse-standalone.jar file like this: + +!style_code(java -jar fitnesse-standalone.jar) +This will start a wiki server listening on port 80. You can modify this and other options using a CommandLineArguments. + +See PasswordFile for a description of how to set up per user authentication. + +!2 Running Rest Commands using the -c option. +See RestfulServices + +!2 Stopping FitNesse +Pressing ''ctrl-c'' generally works well for development use. However, it's not sufficient for automated control. + +There are now ''stop.bat'' and ''stop.sh'' scripts to stop a running server. Invoke them with the same '''-p port_number''' option used to start the server. + +Both scripts run java with a class to stop FitNesse. You can invoke this class directly, as well:{{{Usage: java fitnesse.Shutdown [-pa] + -h {localhost} + -p {80} + -c Supply user credentials. Use when FitNesse has authentication activated. +}}}This command will send an HTTP request to the designated server. If the server is using authentication then the '''-c''' option should be used with appropriate username and password. + +Alternatively you may manually type a URL to shutdown a server. http://hostname:port/?responder=shutdown + +!2 Running from JUnit +see [[!-RunningFromJunit-!][ + + +The details of starting and stopping the FitNesse wiki/web server. + + + + +1213818998677 +5252078302071996298 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/WikiTheming/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/WikiTheming/content.txt new file mode 100644 index 0000000..dede2e9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/WikiTheming/content.txt @@ -0,0 +1,53 @@ +(new since April 2012) + +As of April 2012, !-FitNesse-! has a new layout. There are a few reasons for making this (incompatible) change: + + * !-FitNesse-! had quite a techie edge to it. The menu items were not well structured and some pages looked messy (like Search) + * Web standards have evolved, so should !-FitNesse-! + * Lots of markup was generated directly from java code, now [[Velocity][http://velocity.apache.org]] is performing the rendering + * !-FitNesse-! was not easy to customize + * The web interface looked old fashioned. Having a fresh look and feel appeals to people (yes it does) + * !-FitNesse-! style related files (css, javascript, templates) were put in !-FitNesseRoot-!. This is not desired since it mixes application files with user data (with pages) + +So here you are, in your new !-FitNesse-!, with a look and feel you're not accustomed to. How to deal with that? + +!2 Theming to the rescue +One of the benefits you'll have from the new layout is that the page L&F is easier to change. !-FitNesse-! comes with a few styles built-in: + + * ''fitnesse_straight'' - the default style + * ''fitnesse_mint'' - a classy style + * ''fitnesse_topnav'' - a minimalistic style + * ''bootstrap'' - uses [[Twitter Bootstrap][http://twitter.github.com/bootstrap]] as a basis for its styling + +For all styles the HTML remains the same. The default style can be configured through ''plugins.properties'', !-FitNesse-!'s settings file (this is where you also configure custom symbols). Add the line + +{{{ +Theme=fitnesse_mint +}}}(re)start !-FitNesse-! and the style will have completely changed. + +Apart from the layout style, fitnesse loads a few stylesheets by default: ''fitnesse_pages.css'' and ''fitnesse_wiki.css''. Both files serve the boilerplate for pages (like the properties page) and the wiki text. + +!2 Rolling your own +FitNesse still has the ability to support custom user styling. In [[!-FitNesseRoot/files/fitnesse-!][/files/fitnesse]] you can place your own files. Stylesheets go in a ''css'' directory, Javascript in ''javascript'' and images are filed in the ''images'' folder (note: those directories are not present by default, you'll have to create them by hand). + +Now say you want to create your own style, named ''my-style''. You'll need to create a stylesheet ''!-FitNesseRoot/files/fitnesse/css/my-style.css-!'' and an optional Javascript file ''!-FitNesseRoot/files/fitnesse/javascript/my-style.js-!''. + +The stylesheet can contain just your own styling or a combination of existing styles with your own additions on top of it. + +To reuse one of the existing styles as an entry point, create a custom css file and import the base style you like to use, e.g.: + +{{{ +@import url(fitnesse_straight.css); +}}}Now you can simply add custom elements to it. + +!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. + +!2 Packaging themes +It's also possible to distribute themes in jar files (for example if you want to support a corporate theme for all your !-FitNesse-! projects). For that, package the css and javascript in a jar file, like this: + + * fitnesse/resources/css/my-style.css + * fitnesse/resources/javascript/my-style.js + * fitnesse/resources/images/some-image.png + +Add the jar file to your classpath and define the style (''my-style'') in your ''plugins.properties''. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/WikiTheming/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/WikiTheming/properties.xml new file mode 100644 index 0000000..e47357a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/WikiTheming/properties.xml @@ -0,0 +1,10 @@ + + +true + +Style FitNesse the way you like (theming). + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/WritingPlugins/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/WritingPlugins/content.txt new file mode 100644 index 0000000..689dc2f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/WritingPlugins/content.txt @@ -0,0 +1,44 @@ +FitNesse is extensible. It can be extended via components configured in the ConfigurationFile. Since version 20150226 FitNesse also has another mechanism: service providers. It's using the Java [[!-ServiceLoader-!][http://docs.oracle.com/javase/7/docs/api/java/util/ServiceLoader.html]] functionality to load services dynamically. + +!2 How does it help me? +Previously, to install a plugin you had to download the plugin and load it alongside FitNesse (either from the plugins folder or by using a build tool such as Ant or Maven to launch FitNesse) '''and''' you had to configure the plugin in the ConfigurationFile. When a plugin has a service provider it is no longer needed to also define it in the configuration file. Just put the plugin jar on the FitNesse class path or in the plugins folder and it will be configured automatically. + +!2 Add service providers to your plugin +To add a service provider the plugin provider class (plugin feature factory) has to be configure in + +{{{META-INF/services/fitnesse.plugins.PluginFeatureFactory}}}This file has to contain the plugin implementations (which should implement the !-PluginFeatureFactory-! interface), one per line. Plugins can also extend !-PluginFeatureFactoryBase-!, which contains empty implementations for all methods. + +The interface looks like this: + +{{{public interface PluginFeatureFactory { + + Authenticator getAuthenticator(); + + ContentFilter getContentFilter(); + + void registerResponders(ResponderFactory responderFactory) throws PluginException; + + void registerSymbolTypes(SymbolProvider symbolProvider) throws PluginException; + + void registerWikiPageFactories(WikiPageFactoryRegistry wikiPageFactoryRegistry) throws PluginException; + + void registerTestSystemFactories(TestSystemFactoryRegistry testSystemFactoryRegistry) throws PluginException; + + void registerSlimTables(SlimTableFactory slimTableFactory) throws PluginException; + + void registerCustomComparators(CustomComparatorRegistry customComparatorRegistry) throws PluginException; + +} +}}} +The methods ''getAuthenticator()'' should return one instance. If multiple plugins provide an authenticator, the first authenticator found will be used. The setting can be overridden by explicitly defining an authenticator in the configuration file. + +The same rules are applicable for ''getContentFilter()''. + +The ''registerXxx'' methods are invoked with the appropriate provider or registry. It is the responsibility of the plugin to register it's plugins with those providers. + +!2 Documentation +Every plugin should provide documentation which should be placed in the .PlugIns folder. +Each plugin should add exactly one overview page directly into .PlugIns and further pages as childs to the overview page. + * The name of the overview page should match the plugins name. + * The overview page should have a lengthy help text which explains what the plugin is used for + * The overview page should have a tag which is identical to the current version of the plugin. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/WritingPlugins/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/WritingPlugins/properties.xml new file mode 100644 index 0000000..d30aa8f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/WritingPlugins/properties.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/content.txt new file mode 100644 index 0000000..2d21b5d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/content.txt @@ -0,0 +1,2 @@ +!2 Administering FitNesse +!contents -R1 -g -h diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/properties.xml new file mode 100644 index 0000000..d30aa8f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/AdministeringFitNesse/properties.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/DeliveringTheRightSystem/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/DeliveringTheRightSystem/content.txt new file mode 100644 index 0000000..5e6213e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/DeliveringTheRightSystem/content.txt @@ -0,0 +1,43 @@ +As we discussed in AcceptanceTests, FitNesse testing is about building the ''right code'', as opposed to unit-level testing, which is about building the ''code right''. By "right code" we mean "right system": the feature set with the most business value. + +!3 Everybody Helps Deliver the Right System +Unit-level testing can be done by individual programmers or pairs of programmers without any involvement on the part of non-programmers. FitNesse must be shared among programmers and non-programmers. Try sharing the use of FitNesse among all the disciplines on your software team: managers, programmers, testers, business analysts and experts, customer representatives, users, useability experts, technical writers, support staff, and others. Everybody can benefit from helping to define and run FitNesse tests. + +!3 Write The Tests First +As close as possible to the beginning of a software project, before you have done much requirements analysis, try to get key project stakeholers together to begin defining FitNesse AcceptanceTests. If you are using an agile development method such as Extreme Programming, it will be fairly straightforward to fit this into your schedule and routine. But if not, you'll likely have to win over some hearts and minds, and break through a bit of inertia. + +!3 Put Prose and Test Tables Together +We're not necessarily suggesting that you replace your entire requirements process, in its current form, with FitNesse tests. But we are suggesting that you integrate FitNesse tests and test pages into your requirements process. You may even find, as we have, that all of the prose, images, and everything else that typically goes into a requirements document can just as easily go on FitNesse test pages, along with the tests. The prose describe what the tests mean, + +!3 Example Scenario: Once There Was Some Pizza... +Imagine that a large shipping company is replacing an aging inventory control system. It's a mammoth undertaking. Everybody is involved. But before they get underway, one of the key executives decides that FitNesse might be a big help. She asks the Product Manager for the new system to investigate FitNesse, and to try using it from the outset on the new system. They hire a contractor to provide some FitNesse training, and put together a plan for using it on the project. + +In the first two weeks of the project, before any requirements meetings or documents have happened, the Product Manager gets together with just a few major stakeholders: one of the lead architects, a senior developer, a testing veteran, and one of the inventory experts who will be an eventual user of the system. + +The Product Manager brings these other 4 people together in a small meeting room containing some Actual Food in the form of pizza and drinks. The senior developer agrees to create test tables in FitNesse on te fly on his laptop. Yes! Test tables on the fly! Can that possibly work? Absolutely. +!3 A Few First Test Tables +This team uses pizza, white boards, paper, Excel, FitNesse, and animated discussion to create only two first FitNesse tables. Each table has 6 or 8 rows, and 5 or 6 columns. Both tables concern a single requirement (at least that's what everybody currently believes), and fit on a single test page. The test page contains only the two tables and a first stab at some explanatory prose. The meeting breaks up, after scheduling another similar meeting the next day. +!3 "Wait. You Meant ''That''?" +Test tables describe requirements differently than prose (as we discuss in AcceptanceTests). The exercise of defining test tables for a requirement is a bracing and enlightening one. + +Even when a team thinks they have a set of requirements nailed down in prose, using traditional requirements analysis and documents, they will often find that they learn useful things by trying to express those requirements in terms of executable sets of inputs and expected outputs. + +You may often find that during the course of writing those tables, heated debates arise about the true meaning of the requirement. These are a healthy thing! You want these debates to occur, and you want them to occur as early as possible in the project, and certainly before any code has been written. + +Our intrepid team has several such heated debates between mouthfuls of pizza, and they manage to come to agreement on all of them, in a way that is then expressed in those first two tables. Lots of discussion and sketching and writing all get boiled down to a small handful of inputs and expected outputs that eventually must execute correctly. +!3 So What? What Does that Give You? +What can our team show for these first couple of hours of work? Well, they all agree that: + * The two tables and their accompanying prose describe all the important inputs and outputs for this one requirement (as far as they can tell so far) + * The programmers have a very good idea what it means to write the code to get those two test tables to pass. + * Once those two test tables both run green, '''that requirement will be done''', and they can move on to another requirement. + * The Product Manager, tester, and inventory expert all agree that they may be able to refine the two test tables to describe a few ''unhappy path'' scenarios that they did not identify in the meeting. +!3 Successive Refinement: Let's Talk About the Tests +As the days and weeks go by, the team creates and publishes more test pages containing more test tables and prose. They organize these into a Test Suite. As the weeks pass, tables and test pages get split, combined, moved a round, and otherwise refined. + +Within the first couple of weeks, the programmers get those first two test tables for that first requirement to turn from red to green. They send out a triumphant email. But instead of getting back a congratulatory email from the Product Manager, they get back an email saying "You know what? It turns out that that work is not ''exactly'' what we needed..." So the Development Manager and the Product Manager get together and '''refine those first two tables''' so that they ''do'' describe exactly what was needed. Over the next couple of weeks, the programmers refine their work to get these new test tables to pass. And then they do in fact receive their congratulatory email. + +The point of this is that when it comes to addressing any ambiguities or misunderstandings in requirements, '''test tables are the perfect thing to talk about'''. By refining the test tables, and organizing the requirements discussion around them, the team successively refines the system itself. (They may also successively refine their ability to deliver the system iteratively and incrementally, but that's another story!) +!2 Learning More +If you haven't already done so, check out the [[Two Minute Example][ + + +How Teams Can Use FitNesse: an Introduction +true + +1238102182100 +6331798438264035314 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/EditingFitNessePages/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/EditingFitNessePages/content.txt new file mode 100644 index 0000000..287a9c5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/EditingFitNessePages/content.txt @@ -0,0 +1,46 @@ +!2 Editing and Creating Pages in !-FitNesse-! +!-FitNesse-! is a [[wiki web server][http://wiki.org/wiki.cgi?WhatIsWiki]]. Before you can begin [[creating test tables][ + + + + +1238103025877 +6855924077953894968 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/ExternalHtmlPages/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/ExternalHtmlPages/content.txt new file mode 100644 index 0000000..429434a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/ExternalHtmlPages/content.txt @@ -0,0 +1,20 @@ +You can include external HTML pages as sub-wikis within the !-FitNesse-! wiki. If you have a set of tests that were written in HTML before you started to use !-FitNesse-!, you can include these in your current test suites without converting them to !-FitNesse-! wiki pages. If you prefer not to use the !-FitNesse-! wiki syntax and !-FitNesse-! editor to maintain your tests, you can still use !-FitNesse-! to execute your tests, both interactively and in batch, view test results and track test history. + +To include a folder of HTML files in the !-FitNesse-! wiki, simply place the folder somewhere beneath the !-FitNesseRoot-! folder that holds all the !-FitNesse-! wiki files. Each folder containing HTML files will appear as a page and the HTML files will appear as child pages. + +Here's an example: + + * We create a static wiki page called !-MyExternalPages-! and put the !contents widget in it. This creates a folder called !-MyExternalPages-! with some wiki files in it (content.txt, properties.xml and maybe some zip files). + * We create a folder called !-HtmlPages-! as a sub-folder of !-MyExternalPages-! and create several HTML files in !-HTMLPages-!: !-TestA.html-!, !-TestB.html-! and !-TestC.html-!. + * !-FitNesse-! now shows a page called !-HtmlPages-! as a child of !-MyExternalPages-! and three child pages of !-HtmlPages-! called !-TestA-!, !-TestB-! and !-TestC-!. + +The external HTML pages appear as read-only pages - you cannot edit them from !-FitNesse-! or change their properties (yet!). The folder pages are always marked with the Suite property and the HTML pages are marked with the Test property if they contain at least one HTML table. You can create !-SuiteSetup.html-! and !-SetUp.html-! files and !-FitNesse-! will treat these as special test pages, the same as wiki pages. + +This is a first version of this feature and so there are a few caveats: + * If you use the ?edit or ?properties URL syntax, you can get to the edit and properties pages, but they will fail if you try to save. + * The contents of the HTML files are placed as is inside a !-FitNesse-! page, and may break the page display if there are unbalanced tags or other HTML problems that may not be apparent when the HTML is displayed on its own. + * Hyperlinks, images, Javascript files and other external references in the HTML may not behave as expected when placed inside a !-FitNesse-! page. + * Wiki page names are generated from the HTML file names, but there is no check to avoid potential name collisions. For example, !-TestA.html-! and testa.html will both generate !-TestA-! as a wiki page name. + +If you can avoid these issues, this feature should work well for you: it has been successfully used on a large suite of hundreds of HTML files. + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/ExternalHtmlPages/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/ExternalHtmlPages/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/ExternalHtmlPages/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/FilesSection/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/FilesSection/content.txt new file mode 100644 index 0000000..18209d2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/FilesSection/content.txt @@ -0,0 +1,22 @@ +'''What is the 'files' section?''' +The 'files' section is a directory where FitNesse keeps all of its non-wiki files such as images and other static files. + +'''How do I access the FilesSection?''' +Simply add "/files/" on the end of the URL used to visit the FitNesse installation. To get to the 'files' section of fitnesse.org the following url is used. +http://www.fitnesse.org/files/ + +Notice that this looks like a directory listing. That is because the root of the FilesSection is a directory. By clicking on a directory or file you will be redirected to that selection. If it is a directory you will see a listing of its contents and if it is a file you will see the contents of the file. + +In general FitNesse will serve files from the FilesSection like any other web server would. + +'''How can I link to files in the FilesSection?''' +Any file located in the FilesSection can be linked to from any Wiki page. For example the link to the images directory would look like this: +http://files/images/ +Notice that there is no domain name in the URL. You could have put the domain name in like this: +http://www.fitnesse.org/files/images/ +But that would not be taking advantage of the shortcut we have provided. + +'''Modifying the FilesSection?''' +When you view a directory in the FilesSection you will see several controls at the bottom of the page. They allows you to upload files from your hard drive to the current directory, add a new directory to the current directory, rename or delete an existing file. + +This allows you to upload and manage special documents and link to them from the appropriate page. You could also upload your most recent build to run tests against. \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/FilesSection/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/FilesSection/properties.xml new file mode 100644 index 0000000..7113d48 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/FilesSection/properties.xml @@ -0,0 +1,8 @@ + + + + + + 1213646204336 + 2918076654716302964 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupHeaderAndFooter/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupHeaderAndFooter/content.txt new file mode 100644 index 0000000..0f1b6e4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupHeaderAndFooter/content.txt @@ -0,0 +1,3 @@ + * If there is a wiki page named PageHeader its contents will be displayed at the top of every wiki page. + * If there is a wiki page named PageFooter its contents will be displayed at the bottom of every wiki page. + * PageHeader and PageFooter are inherited by a SubWiki diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupHeaderAndFooter/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupHeaderAndFooter/properties.xml new file mode 100644 index 0000000..67c0954 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupHeaderAndFooter/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/LastModificationTime/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/LastModificationTime/content.txt new file mode 100644 index 0000000..cfc86ab --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/LastModificationTime/content.txt @@ -0,0 +1,7 @@ +You may see the time that a wiki page was last modified by using the ''!-!lastmodified-!'' widget. It should be placed at the beginning of a line in the wiki text. + +!-!lastmodified-! + +The result of this widget is this: + +!lastmodified diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/LastModificationTime/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/LastModificationTime/properties.xml new file mode 100644 index 0000000..081e7f4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/LastModificationTime/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/LinksWithinPages/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/LinksWithinPages/content.txt new file mode 100644 index 0000000..911cb0c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/LinksWithinPages/content.txt @@ -0,0 +1,96 @@ +When you have really longs pages it is convenient to list a bunch of links at the top of the page that will take you to sections further down in the page. With a combination of a couple of wiki widgets, you can achieve this usefulness in FitNesse. + +The first component is called an '''Anchor'''. Use anchors to designate locations in a page that you want to link to. Create anchors like this: +'''!-!anchor anchorName-!''' +When saved, you wont see the anchors but they'll be there in the document. + +Now you just need to create a link to them. You do that with the following syntax: +'''!-.#pageBottom-!''' +When saved this will turn into a link to the anchor named '''pageBottom''' in this case. + +.#pageBottom + +At the very bottom of this page, there is an anchor named '''pageBottom'''. When you click in the link above, you will be taken to that hidden anchor. + +---- +And now, a little poem by '''William Butler Yeats''' to fill the space: + +That civilisation may not sink, + +Its great battle lost, + +Quiet the dog, tether the pony + +To a distant post; + +Our master Caesar is in the tent + +Where the maps ate spread, + +His eyes fixed upon nothing, + +A hand under his head. + +(Like a long-legged fly upon the stream + +His mind moves upon silence.) + +That the topless towers be burnt + +And men recall that face, + +Move most gently if move you must + +In this lonely place. + +She thinks, part woman, three parts a child, + +That nobody looks; her feet + +Practise a tinker shuffle + +Picked up on a street. + +(Like a long-legged fly upon the stream + +Her mind moves upon silence.) + +That girls at puberty may find + +The first Adam in their thought, + +Shut the door of the Pope's chapel, + +Keep those children out. + +There on that scaffolding reclines + +Michael Angelo. + +With no more sound than the mice make + +His hand moves to and fro. + +(Like a long-legged fly upon the stream + +His mind moves upon silence.) + +---- + +!anchor pageBottom + +!c !1 You've hit the bottom of the page! + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/LinksWithinPages/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/LinksWithinPages/properties.xml new file mode 100644 index 0000000..b024bce --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/LinksWithinPages/properties.xml @@ -0,0 +1,7 @@ + + + + 20090228113827 + true + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupAliasLink/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupAliasLink/content.txt new file mode 100644 index 0000000..1cfa78a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupAliasLink/content.txt @@ -0,0 +1,22 @@ +You can take any word, phrase, or image and turn it into a link using the following syntax:{{{ +[[word or phrase][wikiPage]]}}}Here are some examples: + +|!c Markup Text|!c Displayed as:| +|!-click [[here][.FrontPage]].-!|click [[here][.FrontPage]].| +|!-[[!img http://objectmentor.com/Images/OMI_HeaderArea_Logo.png][http://www.objectmentor.com]]-!|[[!img http://objectmentor.com/Images/OMI_HeaderArea_Logo.png][http://www.objectmentor.com]]| +|!-[[''Recent Changes''][RecentChanges]]-!|[[''Recent Changes''][.RecentChanges]]| + + * When the text is a wiki word, the link to the wiki word takes precedence, so you cannot override one wiki word to link to another. + +|!c Markup Text|!c Displayed as:| +|!-click [[.RecentChanges][.FrontPage]].-!|click [[.RecentChanges][.FrontPage]].| + + * When the link is a wiki word then, as usual, it may include a relative or an absolute path with respect to the parent page using < . > characters, or is a sibling if no path is specified. (See SubWiki for more details.) + +|!c Markup Text|!c Displayed as:| +|!-click [[here][.FrontPage]].-!|click [[here][.FrontPage]].| +|!-click [[here][MarkupAliasLink]].-!|click [[here][MarkupAliasLink]].| + + * When the link is to an anchor on a different page, append the anchor's name. (See LinksWithinPages) +|!c Markup Text|!c Displayed as:| +|!-click [[Bottom of Page][LinksWithinPages#pageBottom]].-!|click [[Bottom of Page][LinksWithinPages#pageBottom]].| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupAliasLink/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupAliasLink/properties.xml new file mode 100644 index 0000000..a5e6630 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupAliasLink/properties.xml @@ -0,0 +1,8 @@ + + + + + + 1238167070532 + -7119519436873449038 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupBold/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupBold/content.txt new file mode 100644 index 0000000..5354b7a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupBold/content.txt @@ -0,0 +1,4 @@ +To set a word or phrase in '''bold''' simply enclose the section of text in three single quotes like this: + +|!c '''Markup Text'''|!c '''Displayed as'''| +|!-I want '''this''' in bold.-!|I want '''this''' in bold.| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupBold/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupBold/properties.xml new file mode 100644 index 0000000..305a7f3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupBold/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717205950 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCenter/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCenter/content.txt new file mode 100644 index 0000000..908913f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCenter/content.txt @@ -0,0 +1,7 @@ +You can center a line by prefixing it with !c + +!c This line is centered. + +|!c '''Markup Text'''|!c '''Displayed as'''| +|!-this line is not centered-!|this line is not centered| +|!-!c this text is centered-!|!c this text is centered| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCenter/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCenter/properties.xml new file mode 100644 index 0000000..305a7f3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCenter/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717205950 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCollapsableSection/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCollapsableSection/content.txt new file mode 100644 index 0000000..8be2946 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCollapsableSection/content.txt @@ -0,0 +1,52 @@ +Often a page include lots of meta text that tends to get in the way. With collapsable sections you can easily delimit, collapse, or completely hide sections of content. Delimited content may be collapsed to hide its content and later expand it to make the content visible again. Hidden sections (as opposed to collapsed sections) are completely inaccessible. + +A collapsable section starts with an ! and at least one star followed by a space and title for the section. The following lines will contain the content of the section. The section ends by a line with at least one star and an !. + +!3 Collapsible Sections that Start Opened +{{{!******** Section Title +This is the content of the section. +The section may be as long as needed. +To end a collapsable section, +use at least one * followed by an !. +**************! +}}} +When rendered looks like: (Click the arrow! It's fun!) +!* Section Title +This is the content of the section. +The section may be as long as needed. +To end a collapsable section, +use at least one * followed by an !. +**************! + +You'll notice that the section is expanded by default. + +!3 Collapsible Sections that Start Closed +You may designate a section to be closed by default by following the stars on the first line with a right arrow ('''>'''). +{{{!*****> Collapsed Section +section body +**********! +}}} +When rendered: + +!*****> Collapsed Section +section body +**********! + +!3 Collapsible Sections that Are Completely Hidden +Additionally, a section may be hidden completely using the "less than" (<) character after the asterisks: +{{{!*****< This is HIDDEN, but is ACTIVE +!define VarIsStillDEFINED {23} +******! +}}} +This feature requires the following addition to the fitnesse_base.css file if upgrading the .jar files: +{{{.invisible +{ + line-height: 0px; + visibility:hidden; +} +}}} +The actual section is after this line...really! We'll check it with a variable expansion: +!*****< This is HIDDEN, but is ACTIVE +!define VarIsStillDEFINED {23} +******! +!-$-!VarIsStillDEFINED = ${VarIsStillDEFINED} diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCollapsableSection/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCollapsableSection/properties.xml new file mode 100644 index 0000000..3dfb797 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCollapsableSection/properties.xml @@ -0,0 +1,9 @@ + + + + 20081020135106 + + + 1201730908252 + 3310084361753212410 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupComments/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupComments/content.txt new file mode 100644 index 0000000..9bf2434 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupComments/content.txt @@ -0,0 +1,11 @@ +!2 Comments. +# +# This is a comment +# +You can add a comment to the wiki markup text by simply putting the '#' sign as the first character of a line. The entire line, including the line end, will be ignored. +{{{# +# This is a comment +#}}} +There is a slightly different behaviour when you put the '#' sign in front of the first row of a MarkupTable. + +See the [[Comment Acceptance Test][.FitNesse.SuiteAcceptanceTests.SuiteWidgetTests.TestComment]] \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupComments/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupComments/properties.xml new file mode 100644 index 0000000..67c0954 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupComments/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupContents/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupContents/content.txt new file mode 100644 index 0000000..ed54025 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupContents/content.txt @@ -0,0 +1,44 @@ +!include -seamless |Symbolic Link |The page is a symbolic link of the current page | +|!c - |Skipped |The skip property box is checked; this page and all its chidlren are excluded from suite tests| + +The character set for properties may be changed via the PROPERTY_CHARACTERS variable; this variable is positional in the order specified above. + +!3 Global Variables that Modify TOC +|''' NAME ''' |''' Default '''|''' Values ''' |''' Notes ''' | +|FILTER_TOC |false |true!-|-!false |'' Append suite fiters to TOC (-f flag) '' | +|HELP_PREFIX_TOC |:<''space''> |''any string'' |'' Define prefix for help text suffix '' | +|HELP_TOC |false |true!-|-!false |'' Append help text to TOC (-h flag) '' | +|MORE_SUFFIX_TOC |<''space''>... |''any string'' |'' Define sequence to show more TOC levels ''| +|PROPERTY_CHARACTERS|!- *+@>- -! |''any characters''|'' Define property icons for TOC '' | +|PROPERTY_TOC |false |true!-|-!false |'' Append property icons to TOC (-p flag) '' | +|REGRACE_TOC |false |true!-|-!false |'' Makes !contents list graceful (-g flag) ''| +!note (See the ''root'' page for overrides) + +!3 !-AcceptanceTests-! for the ''' !contents ''' widget + * .FitNesse.SuiteAcceptanceTests.SuiteWidgetTests.TestContents + * .FitNesse.SuiteAcceptanceTests.SuiteWidgetTests.TestContentsWithRecursion + * .FitNesse.SuiteAcceptanceTests.SuiteWidgetTests.TestContentsRegraced + * .FitNesse.SuiteAcceptanceTests.SuiteWidgetTests.TestContentsProperties + * .FitNesse.SuiteAcceptanceTests.SuiteWidgetTests.TestContentsFilters + * .FitNesse.SuiteAcceptanceTests.SuiteWidgetTests.TestContentsHelp diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupContents/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupContents/properties.xml new file mode 100644 index 0000000..c2173ce --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupContents/properties.xml @@ -0,0 +1,8 @@ + + + +true + +1238100626155 +1323665309233349617 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCrossReference/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCrossReference/content.txt new file mode 100644 index 0000000..59dbb73 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupCrossReference/content.txt @@ -0,0 +1,9 @@ +You can add a ''Cross Reference'' to another page with the !-!see-! statement. + +|!c '''Markup Text'''|!c '''Displayed as'''| +|!-!see .FrontPage-!|!see .FrontPage| + +Aside from being a nice syntax for cross references, this widget is also used in [[test suites][ + + +true + +1201723540114 +8020665261681511200 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupEditWikiPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupEditWikiPage/content.txt new file mode 100644 index 0000000..0f5f502 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupEditWikiPage/content.txt @@ -0,0 +1,15 @@ + * You create a new wiki page by clicking on the '''[?]''' at the end of a new WikiWord. + * You edit an existing wiki page by clicking on the '''Edit''' button (or typing ''alt-e'', then ''Enter''). + +Both of these operations take you to the edit page, in which the current markup text of the wiki page is shown. You can edit the markup using standard text editing operations. + +When you click the '''Save''' button (or push ALT+S) ''!-FitNesse-!'' saves the wiki text and redisplays the page. +---- +!3 Editing Accessories + * '''Paste From Excel''' + * The edit page contains a PasteFromExcel button, which will allow you to paste a table copied from a Microsoft Excel spreadsheet into the text window. The table will be reformatted to the standard Fitnesse [[table][MarkupTable]] conventions. + * '''Setting Page Attributes.''' + * Hitting the '''Properties''' button (or typing ''alt-p'') will bring up a form that shows the attributes for this page. Some attributes are associated with a button on the wiki page. You can hide or show these buttons by clearing of setting their check boxes and hitting '''Save'''. + +See [[Page Attributes][PageProperties]]. + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupEditWikiPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupEditWikiPage/properties.xml new file mode 100644 index 0000000..67c0954 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupEditWikiPage/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupExpressions/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupExpressions/content.txt new file mode 100644 index 0000000..a1d3d1f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupExpressions/content.txt @@ -0,0 +1,52 @@ +Expressions calculate a result and substitute the result in place of the expression much like variable references. + * Are enclosed in ''' '' !-${=-! '' ''' and ''' '' !-=}-! '' ''' delimiters. + * May appear anywhere a variable is allowed. + * May contain the following operators: + * + - * / ^ + * unary - + * cos sin tan + * ( ) + * E notation, e.g., 12E+3 + +Given: +{{{!define X {1} +!define Y {2} +!define Z {3} }}} + +The following expressions yields 10: {{{ !-${= ${X} + ${Y} + ${Z} + 4 =}-! }}} + +!3 Actual Markup +!define X {1} +!define Y {2} +!define Z {3} + +The result is 10?: ${= ${X} + ${Y} + ${Z} + 4 =} yes! + +!3 Advanced Notation + +'''Complete Syntax''' +'''!-${=-!''' ['''%''' ''format'' ''':'''] ''expression'' '''!-=}-!''' + +Where format is a single numeric or boolean format specifier defined by the Java Formatter class conversions. + +'''Examples''' +|''' Mark Up ''' |''' Result ''' | +|!-${=1+2+3=}-! |${=1+2+3=} | +|!-${=12E+2 + 34=}-! |${=12E+2 + 34=} | +|!-${=%03d:1+2+3=}-! |${=%03d:1+2+3=} | +|!-${=%02X:10+1=}-! |${=%02X:8+1=} | +|!-${= %02x : 10 + 1 =}-! |${= %02x : 8 + 1 =} | +|!-${= %03.2f : 10.12345678 =}-!|${= %03.2f : 10.12345678 =}| +|!-${=%b: 1 =}-! |${=%b:1=} | +|!-${=%b: 0 =}-! |${=%b:0=} | +|!-${=%B: 6 =}-! |${=%B:6=} | +|!-${=%B: -2 =}-! |${=%B:-2=} | + +!3 Formatting Locale +The formatting locale can be overriden by setting the ''FORMAT_LOCALE'' variable. + +'''Example''' +{{{!-!define FORMAT_LOCALE {fr}-!}}} + +!see + +true +true +true +true +true +true +true +true +1238167180400 +7251473079430893688 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupExternalLink/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupExternalLink/content.txt new file mode 100644 index 0000000..5914633 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupExternalLink/content.txt @@ -0,0 +1,9 @@ +A link to an external web page is created by typing the URL. + +|!c '''Markup Text'''|!c '''Displayed as:'''| +|!-http://www.objectmentor.com-!|http://www.objectmentor.com| + +If you would like to create a link to the '''files''' section of the local FitNesse installation, you may omit the domain name. + +|!c '''Markup Text'''|!c '''Displayed as:'''| +|!-http://files/images/-!|http://files/images/| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupExternalLink/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupExternalLink/properties.xml new file mode 100644 index 0000000..ded158c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupExternalLink/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717205951 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHashTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHashTable/content.txt new file mode 100644 index 0000000..c5e4205 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHashTable/content.txt @@ -0,0 +1,25 @@ +Hash Tables are collections of name-value pairs that can be passed as arguments into test fixtures. They render as tables. !-DoFixture-! will decode a name-value pair table into a true hashtable. Java_Slim and Ruby_Slim will both convert this HTML string into a Map (or a hash in the case of Ruby) + +Any text enclosed in '''!-!{-!''' and '''}''' will be treated as a Hash Table. + +|!c '''Markup Text'''|!c '''Displays as'''| +|!-!{fname:Bob, lname:Martin, dob:5-Dec-1952}-!|!{fname:Bob, lname:Martin, dob:5-Dec-1952}| + +The key name must be plain text, but the value can be any reasonable wiki construct. + +|!c '''Markup Text'''|!c '''Displays as'''| +|!-!{fname:''Bob'', lname:''Martin'', today:!today, hash:!{fname:Bob, lname:Martin, dob:5-Dec-1952}}-!|!{fname:''Bob'', lname:''Martin'', today:!today, hash:!{fname:Bob, lname:Martin, dob:5-Dec-1952}}| + + +!3 Syntax issues. + + * A colon, comma and closing brace simply cannot be placed in either the name or the value. + * The hash widget can be written on many lines as follows: +{{{ + !{ + Name:Bob, + Address:There, + Time:Now + }! }}} +!3 CSS +You can change their appearance using the css classes !style_code(hash_table), !style_code(hash_row), !style_code(hash_key), !style_code(and hash_value) diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHashTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHashTable/properties.xml new file mode 100644 index 0000000..d30aa8f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHashTable/properties.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHeaders/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHeaders/content.txt new file mode 100644 index 0000000..73fb469 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHeaders/content.txt @@ -0,0 +1,10 @@ +Headers are created by prefixing a line with !1 or !2 or !3 + +|!c '''Markup Text'''|!c '''Displayed as'''| +|!- !1 Title -!|!1 Title| +|!- !2 Header -!|!2 Header| +|!- !3 Second Header -!|!3 Second Header| + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHeaders/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHeaders/properties.xml new file mode 100644 index 0000000..346a634 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHeaders/properties.xml @@ -0,0 +1,7 @@ + + + + 20090228113826 + true + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHelp/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHelp/content.txt new file mode 100644 index 0000000..ae32009 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHelp/content.txt @@ -0,0 +1,15 @@ +We can display the help text that's been defined for the current page: + +!-!help-! + +displays as: + +!help + +We can also make a link to edit the page properties. + +!-!help -editable-! + +displays as: + +!help -editable diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHelp/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHelp/properties.xml new file mode 100644 index 0000000..1ece30d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHelp/properties.xml @@ -0,0 +1,9 @@ + + + +This is the help text for the markup help page. + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHorizontalRule/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHorizontalRule/content.txt new file mode 100644 index 0000000..587f5e4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHorizontalRule/content.txt @@ -0,0 +1,6 @@ +You can draw a horizontal rule by using four or more dashes. The more dashes, the thicker the line: + +|!c '''Markup Text'''|!c '''Displayed as:'''| +|!-above----below-!|!c above----!c below| +|!-above------below-!|!c above------!c below| +|!-above--------below-!|!c above--------!c below| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHorizontalRule/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHorizontalRule/properties.xml new file mode 100644 index 0000000..ede6d52 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupHorizontalRule/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717205952 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupInternalLink/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupInternalLink/content.txt new file mode 100644 index 0000000..1ca65a4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupInternalLink/content.txt @@ -0,0 +1,21 @@ +You can make a link to another wiki page simply by stating the name of the wiki page. For example, the name of this page is MarkupInternalLink. + +The name of a page has a special syntax known as a [[!-WikiWord-!][ + + + + +1238167300381 +-5797473787600939218 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupItalics/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupItalics/content.txt new file mode 100644 index 0000000..73b4763 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupItalics/content.txt @@ -0,0 +1,4 @@ +To set a word or phrase in ''italics'' simply enclose the section of text in two single quotes like this: + +|!c '''Markup Text'''|!c '''Displayed as'''| +|!-I want ''this'' in italics.-!|I want ''this'' in italics.| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupItalics/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupItalics/properties.xml new file mode 100644 index 0000000..67c0954 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupItalics/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupLists/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupLists/content.txt new file mode 100644 index 0000000..45fae10 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupLists/content.txt @@ -0,0 +1,82 @@ + * Bullet lists are created by prefixing a space and an asterisk to a line. + * You can create sublists by adding more spaces on the front. + 1 Numbered lists are created by prefixing a space and a number to a line. + +---- '''Markup Text'''{{{ + * Item one + * sub item one + * sub item two + + * Item two. + 1 sub item 2 + 2 sub item 3 + * sub sub item one + 1 sub sub sub item one. +}}}----'''Displays as:''' + * Item one + * sub item one + * sub item two + + * Item two. + 1 sub item 2 + 2 sub item 3 + * sub sub item one + 1 sub sub sub item one. + +---- '''Long numeric lists''' +Beware when using numeric lists that only single digit numbers are identified as numeric lists. +The following 11 item list renders incorrectly. +{{{ + 1 item one + 2 item two + 3 item three + 4 item four + 5 item five + 6 item six + 7 item seven + 8 item eight + 9 item nine + 10 item ten + 11 item eleven +}}} + + 1 item one + 2 item two + 3 item three + 4 item four + 5 item five + 6 item six + 7 item seven + 8 item eight + 9 item nine + 10 item ten + 11 item eleven + +This can be corrected by simply using a single digit (1-9, but not zero)- the actual numeric value is correct as the HTML is rendered using !-<ol>-! notation. + +{{{ + 1 item one + 2 item two + 3 item three + 4 item four + 5 item five + 6 item six + 7 item seven + 8 item eight + 9 item nine + 1 item ten + 1 item eleven +}}} + + 1 item one + 2 item two + 3 item three + 4 item four + 5 item five + 6 item six + 7 item seven + 8 item eight + 9 item nine + 1 item ten + 1 item eleven + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupLists/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupLists/properties.xml new file mode 100644 index 0000000..081e7f4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupLists/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupLiteralText/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupLiteralText/content.txt new file mode 100644 index 0000000..80e1462 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupLiteralText/content.txt @@ -0,0 +1,9 @@ +Sometimes you want to show a !-WikiWord-! without having it turn into a link. Or sometimes you might want to show some wiki markup text such as !-'''bold'''-! without having the markup take effect. To do this you use the ''literal'' markup text. + +Any text enclosed in '''!-!--!''' and '''-!''' will be treated as a literal and will not be processed for wiki words or other markup widgets. This is also a "cool" way to add HTML to a wiki page. + +|!c '''Markup Text'''|!c '''Displays as'''| +|!-!-WikiWord-!-!|!-WikiWord-!| +|!-!-'''bold'''-!-!|!-'''bold'''-!| +|!-!-<i>hello</i>-!-!|!-hello-!| + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupLiteralText/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupLiteralText/properties.xml new file mode 100644 index 0000000..2dc0bf6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupLiteralText/properties.xml @@ -0,0 +1,10 @@ + + + + + + + +1225603481926 +-5671299916402952716 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupNesting/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupNesting/content.txt new file mode 100644 index 0000000..814382a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupNesting/content.txt @@ -0,0 +1,39 @@ +Some markup elements can not be nested within other markup elements without creating an ambiguous meaning. In this case, we can use the nesting delimiters '''!-!(-!''' and '''!-)!-!'''. These delimiters act like parenthesis - they do not add any content to the page but just group the interpretation of the enclosed markup correctly. + +We can use this to nest tables, for example: + +!-|this|table|-! +!-|has| !(|a|nested|table|)! |-! + +displays as: + +|this|table| +|has| !(|a|nested|table|)! | + +Without nesting: + +!-|this|table|-! +!-|has| |a|nested|table| |-! + +is displayed as a single table. + +|this|table| +|has| |a|nested|table| | + +Nesting always creates a 'virtual' new line, so elements that must start on a new line can be nested within other content. + +!-This line has !(!note a nested note)! within.-! + +displays as: + +This line has !(!note a nested note)! within. + +Without nesting: + +!-This line has !note a nested note within.-! + +displays as: + +This line has !note a nested note within. + + \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupNesting/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupNesting/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupNesting/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupNote/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupNote/content.txt new file mode 100644 index 0000000..27df81a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupNote/content.txt @@ -0,0 +1,6 @@ +You can make a note by starting a line with '''!note''' + +|!c '''Markup Text'''|!c '''Displayed as'''| +|!-!note this text is a note-!|!note this text is a note| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupNote/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupNote/properties.xml new file mode 100644 index 0000000..96aeba4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupNote/properties.xml @@ -0,0 +1,9 @@ + + + + 20090327102259 + + + 1238167379384 + 6044718649644820583 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPageInclude/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPageInclude/content.txt new file mode 100644 index 0000000..5270785 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPageInclude/content.txt @@ -0,0 +1,25 @@ +To include the content from one page into another you may use the !-!include-! widget + +Usage: +'''!-!include PageName-!''' + +For example if you wanted to all the content from .FrontPage to be displayed here you would simply type: + +!-!include .FrontPage-! + +As a result you will see .FrontPage below: +----- +!include .FrontPage +----- +|'''Parameters:'''| +|!style_code(-seamless)|''causes the included page to be rendered without an enclosing box.''| +|!style_code(-c)|''causes the included page to be collapsed.''| +|!style_code(-setup)|''causes the included page to be used for test/suite setup.''| +|!style_code(-teardown)|''causes the included page to be used for test/suite teardown.''| + +!3 '''Watch out for !include cycles''' +Don't include a page that already includes the page that you are including from. ;-) + +!3 Including Test snippets +It is often useful to include portions of test tables into your tests. You do this to bring in common setup data or common test sequences (possibly modified with variables). A convenient way to do this is to use the Backwards Search notation as follows:{{{!include + + +true + +1232747484629 +-5093174657906389793 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPath/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPath/content.txt new file mode 100644 index 0000000..23010bd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPath/content.txt @@ -0,0 +1,15 @@ +There are some special functions in FitNesse that require you to name a directory path. You do this with the !path directive. + +|!c '''Markup Text'''|!c '''Displays as'''| +|!-!path c:\directory-!|!path c:\directory| + +You can also specify all the .jar files in a directory by using a wildcard: +{{{!-!path /usr/javalib/*.jar-!}}} + +Or you can specify all .jar files in a directory ''and all subdirectories'' by using the ** wildcard. +{{{!-!path /usr/javalib/**.jar-!}}} + +Paths such as these will be used when you press the ''test'' or ''suite'' buttons on a page. + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPath/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPath/properties.xml new file mode 100644 index 0000000..ff43047 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPath/properties.xml @@ -0,0 +1,9 @@ + + + + 20090228113824 + true + + 1213127675393 + 7889220604288275533 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPicture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPicture/content.txt new file mode 100644 index 0000000..5f39495 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPicture/content.txt @@ -0,0 +1,19 @@ +Picture can be added by using the '''!img''' marker followed by a URL +As a shortcut, any URL ending in '''.gif''' or '''.jpg''' will also be included as an image. + +|!c '''Markup Text'''|!c '''Displayed as:'''| +|{{{!img http://files/fitnesse/images/fitnesse-logo.png}}}|!img http://files/fitnesse/images/fitnesse-logo.png| +|{{{http://files/fitnesse/images/fitnesse_architecture.jpg}}}|http://files/fitnesse/images/fitnesse_architecture.jpg| + +You may align images to the left or right and wrap following text around the images by using '''!img-l''' and '''!img-r''' respectively. + +|{{{!img-l (Gettysburg address)}}}|!img-l http://files/fitnesse/images/fitnesse-logo.png Fourscore and seven years ago our fathers brought forth on this continent a new nation, conceived in liberty and dedicated to the proposition that all men are created equal. Now we are engaged in a great civil war, testing whether that nation or any nation so conceived and so dedicated can long endure. We are met on a great battlefield of that war. We have come to dedicate a portion of that field as a final resting-place for those who here gave their lives that that nation might live. It is altogether fitting and proper that we should do this. But in a larger sense, we cannot dedicate, we cannot consecrate, we cannot hallow this ground. The brave men, living and dead who struggled here have consecrated it far above our poor power to add or detract. The world will little note nor long remember what we say here, but it can never forget what they did here. It is for us the living rather to be dedicated here to the unfinished work which they who fought here have thus far so nobly advanced. It is rather for us to be here dedicated to the great task remaining before us that from these honored dead we take increased devotion to that cause for which they gave the last full measure of devotion that we here highly resolve that these dead shall not have died in vain, that this nation under God shall have a new birth of freedom, and that government of the people, by the people, for the people shall not perish from the earth.| +|{{{!img-r (Gettysburg address)}}}|!img-r http://files/fitnesse/images/fitnesse-logo.png Fourscore and seven years ago our fathers brought forth on this continent a new nation, conceived in liberty and dedicated to the proposition that all men are created equal. Now we are engaged in a great civil war, testing whether that nation or any nation so conceived and so dedicated can long endure. We are met on a great battlefield of that war. We have come to dedicate a portion of that field as a final resting-place for those who here gave their lives that that nation might live. It is altogether fitting and proper that we should do this. But in a larger sense, we cannot dedicate, we cannot consecrate, we cannot hallow this ground. The brave men, living and dead who struggled here have consecrated it far above our poor power to add or detract. The world will little note nor long remember what we say here, but it can never forget what they did here. It is for us the living rather to be dedicated here to the unfinished work which they who fought here have thus far so nobly advanced. It is rather for us to be here dedicated to the great task remaining before us that from these honored dead we take increased devotion to that cause for which they gave the last full measure of devotion that we here highly resolve that these dead shall not have died in vain, that this nation under God shall have a new birth of freedom, and that government of the people, by the people, for the people shall not perish from the earth.| + +You may also set the width of the image if you wish by using '''!-!img -w nnn-!''' where nnn is the width of the image, set the border of the image using '''!-!img -b x-!''' where x is the width of the border and set the margin around the image using '''!-!img -m y-!''' where y is the margin. You may also combine all of these attributes. + +|!c '''Markup Text'''|!c '''Displayed as:'''| +|{{{!img -w 200 http://files/fitnesse/images/fitnesse-logo.png}}}|!img -w 200 http://files/fitnesse/images/fitnesse-logo.png| +|{{{!img -b 2 http://files/fitnesse/images/fitnesse-logo.png}}}|!img -b 2 http://files/fitnesse/images/fitnesse-logo.png| +|{{{!img -m 10 http://files/fitnesse/images/fitnesse-logo.png}}}|!img -m 10 http://files/fitnesse/images/fitnesse-logo.png| +|{{{!img -w 200 -b 2 -m 10 http://files/fitnesse/images/fitnesse-logo.png}}}|!img -w 200 -b 2 -m 10 http://files/fitnesse/images/fitnesse-logo.png| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPicture/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPicture/properties.xml new file mode 100644 index 0000000..7f8ea4e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPicture/properties.xml @@ -0,0 +1,6 @@ + + + +true + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPreformatted/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPreformatted/content.txt new file mode 100644 index 0000000..5cbc589 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPreformatted/content.txt @@ -0,0 +1,23 @@ +If you want a stretch of text that should be left alone then you can enclose that text in three braces as follows: +!-{{{-!{{{Text to be left alone}}}!-}}}-! +Between the braces no wiki words will be identified, no markup syntax will be decoded. The text will be displayed in mono font exactly as it was typed. We use this technique a lot for showing samples of fixture code: +{{{ +import fit.ColumnFixture; + +public class AddRemovePlayerFixture extends ColumnFixture { + public String playerName; + private Game theGame; + + public boolean addPlayer() { + theGame = StaticGame.getInstance(); + Player thePlayer = theGame.addPlayer(playerName); + return theGame.playerIsPlaying(thePlayer); + } + + public int countPlayers() { + return theGame.getNumberOfPlayers(); + } +} }}} + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPreformatted/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPreformatted/properties.xml new file mode 100644 index 0000000..6279719 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupPreformatted/properties.xml @@ -0,0 +1,7 @@ + + + + 20090228113824 + true + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupStrike/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupStrike/content.txt new file mode 100644 index 0000000..5c42bb0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupStrike/content.txt @@ -0,0 +1,4 @@ +To put a --strike-- through word or phrase simply surround the text with two dashes. + +|!c '''Markup Text'''|!c '''Displayed as'''| +|!-I want --this-- to be struck.-!|I want --this-- to be struck.| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupStrike/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupStrike/properties.xml new file mode 100644 index 0000000..847f8f6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupStrike/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717205955 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupStyle/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupStyle/content.txt new file mode 100644 index 0000000..81585a0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupStyle/content.txt @@ -0,0 +1,27 @@ +To set the style of a word or phrase use the !-!style_(text)-! widget. This widget has three forms. !style_code[!-!style_(text)-!], !style_code(!-!style_{text}-!), and !style_code{!-!style_[text]-!} + +!note Yes, that means that you cannot put a style around a single string that has all three closing terminators. I'm sure you can figure out the workaround. +Here are some of the available classes you can use. + +| !c '''Markup Text''' | !c '''Displayed as''' | +| !-!style_error(an error)-! | !style_error(an error) | +| !-!style_pass(pass)-! | !style_pass(pass) | +| !-!style_fail(fail)-! | !style_fail(fail) | +| !-!style_ignore(ignore)-! | !style_ignore(ignore) | +| !-!style_caps{Caps}-! | !style_caps{Caps} | +| !-!style_code[code]-! | !style_code[code] | +| !-!style_red[red]-! and other colors... | !style_red[red], !style_orange[orange], !style_yellow[yellow], !style_green[green], !style_blue[blue], !style_indigo[indigo], !style_violet[violet], !style_pink[pink], !style_lightYellow[lightYellow], !style_lightGreen[lightGreen], !style_lightBlue[lightBlue], !style_chocolate[chocolate], !style_darkOrange[darkOrange], !style_darkRed[darkRed], !style_olive[olive], !style_darkBlue[darkBlue], !style_darkGreen[darkGreen] | +| !-!style_code(!style_red[code red])-! | !style_code(!style_red[code red]) | +| !-!style_note[note]-! | !style_note[note] | +| !-!style_right[right]-! | !style_right[right] | +| !-!style_strike[strike]-! | !style_strike[strike] | +| !-!style_meta[meta]-! | !style_meta[meta] | +| !-!style_included[included]-! | !style_included[included] | +| !-!style_setup[setup]-! | !style_setup[setup] | +| !-!style_collapse_rim[collapse_rim]-! | !style_collapse_rim[collapse_rim] | +| !-!style_pageHelp[pageHelp]-! | !style_pageHelp[pageHelp] | +| !-x !style_hidden[hidden] x-! | x !style_hidden[hidden] x | +| !-!style_test_output_name[test_output_name]-! | !style_test_output_name[test_output_name] | +| !-!style_fit_label[fit_label]-! | !style_fit_label[fit_label] | +| !-!style_fit_stacktrace[fit_stacktrace]-! | !style_fit_stacktrace[fit_stacktrace] | +| !-!style_fit_grey[fit_grey]-! | !style_fit_grey[fit_grey] | diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupStyle/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupStyle/properties.xml new file mode 100644 index 0000000..4c972a8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupStyle/properties.xml @@ -0,0 +1,13 @@ + + + true + true + true + true + true + true + true + true + 1232130397426 + 2924400028923341443 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupTable/content.txt new file mode 100644 index 0000000..21a4f59 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupTable/content.txt @@ -0,0 +1,41 @@ +Tables can be created very easily. Use the vertical stroke as the first character of the line, and separate each table cell with it: + +'''Markup Text''' +{{{|Alpha| +|Beta|gamma|Delta| +|1|2|3|}}}---- +'''Displays as:''' +|Alpha| +|Beta|gamma|Delta| +|1|2|3| +---- +You can use most wiki markup directives in table cells, including !c, !1, !2, !3, bold, and italic. +!2 Literal tables. +If you don't want any markup directives interpreted in the table, then you can use a special form that is preceded with a ! and like this: + +'''Markup Text''' +{{{!|ThisTableWillNotInterpret|!c any directives|'''it is treated'''| +|!1 like a literal|--and is especially useful--|''for test tables.''| +|^SinceTheyTend| * to have WikiWord symbols in them.|}}} +'''Displays as:''' +!|ThisTableWillNotInterpret|!c any directives|'''it is treated'''| +|!1 like a literal|--and is especially useful--|''for test tables.''| +|^SinceTheyTend| * to have WikiWord symbols in them.| + +!2 Hidden table heads +You can hide the first row of a table. This allows you to write comment tables that just look like ordinary HTML tables. +The complete table still gets executed, the first row is just hidden by a CSS rule. +Precede the first row with a '-'. This also works for literal tables. + +'''Markup Text''' +{{{-!|Comment| +|Beta|gamma|Delta| +|1|2|3|}}} +'''Displays as:''' +-!|Comment| +|Beta|gamma|Delta| +|1|2|3| + +!2 Plain Text Tables + +!see [[!-PlainTextTable-!][ + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupVariables/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupVariables/content.txt new file mode 100644 index 0000000..5c119ba --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/MarkupVariables/content.txt @@ -0,0 +1,82 @@ +!2 Defining and Expressing Variables. +You can define a variable to represent any amount of text. + * Variable names may contain letters, numbers, periods and underscores; e.g., MYTEST.someVar or user.name or USER_NAME + * You can define a variable in three ways: + * !style_code(!-!define var {text}-!) - as a delimited block of text + * !style_code[!-!define var othervar-!] - by copying the value of another variable + * !style_code(!-!define var {${= 10 / 2 =}}-!) - as an [[expression][MarkupExpressions]] + * The variable text can span many lines as shown below: +!style_code{!define myVariable { +This is the +text of my +variable +}} +!define myVariable { +this is the +text of my +variable +} + +You express the value of a variable like this: !style_code{!-${myVariable}-!}. This expression is replaced with the value of the variable. + +''The value of the variable is: ${myVariable}.'' + +If the variable value contains wiki markup, it is interpreted as the variable is expressed. + +!style_code{!-!define markedUp {This is '''bold'''}-!} +!define markedUp {This is '''bold'''} +!style_code{!-${markedUp}-!} is expressed as: ${markedUp} + +A variable can reference other variables. + +!style_code{!-!define y {y-value}-!} +!define y {y-value} +!style_code{!-!define x {The value of y is ${y}}-!} +!define x {The value of y is ${y}} +!style_code{!-${x}-!} is expressed as: ${x} +!style_code{!-!define y {new-y-value}-!} +!define y {new-y-value} +!style_code{!-${x}-!} is expressed as: ${x} + +A variable can be copied from another variable. +!style_code{!-!define z y-!} +!define z y +!style_code{!-${z}-!} is expressed as: ${z} + +A variable can contain an expression +!style_code{!-!define n 10-!} +!define n {10} +!style_code{!-!define q 2 -!} +!define q {2} +!style_code{!-!define d {${= ${n} / ${q} =}}-!} +!define d {${= ${n} / ${q} =}} +!style_code{!-${d}-!} is : ${d} +IMPORTANT: If the variables used in the expression change than also the result changes! +!style_code{!-!define q 5 -!} +!define q {5} +!style_code{!-${d}-!} is : ${d} + +!3 Variable Scope +If a variable is expressed on a page, but is not found, then its parent pages are searched in order. +If the variable is not found in any ancestor pages, FitNesse will inspect System.properties. + +!3 Defining Variables In URL Input +You can define variables in the URL input by using the format of ''key''=''value'' (''key'' as variable name & ''value'' as variable value). ''key'' and ''value'' can be any string values. Multiple variables can be specified separated by ''&''. +Variable values specified in the URL input are given precedence over variables defined on the page or in System.properties for the same key. + +See [[Restful Services][ + + + + + + + +1238167551817 +6509577387506798141 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/PlainTextTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/PlainTextTable/content.txt new file mode 100644 index 0000000..1121e49 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/PlainTextTable/content.txt @@ -0,0 +1,76 @@ +Tables can be created very easily from plain text. + +'''Markup Text''' +{{{![ +simple plain +text pasted +from somewhere +]!}}}---- +'''Displays as:''' +![ +simple plain +text pasted +from somewhere +]! +One note on editing plain text tables with the rich text editor: the content is displayed as +{{{ + +simple plain +text pasted +from somewhere + +}}} +In order to add extra lines, use - to add lines when editing the plain text table. It is not possible to create plain text tables from the rich text editor. + +---- +These are ''literalized'' tables, so most wiki markup does not work inside them. + +You can create cells by declaring a delimiter as the first character after the '''['''. Only punctuation characters will work.: +{{{![: +Name:Bob +Address:Here +Street:Cranbrook:Zip:60048 +]!}}} +'''Displays as:''' +![: +Name:Bob +Address:Here +Street:Cranbrook:Zip:60048 +]! +---- +If you want to hide the first row of the table, you can put it right after the delimiter following a space. The first row is still there, it's just hidden. +{{{![: Location +Name:Bob +Address:Here +Street:Cranbrook:Zip:60048 +]!}}} +'''Displays as:''' +![: Location +Name:Bob +Address:Here +Street:Cranbrook:Zip:60048 +]! +---- +If you want to hide the first row but don't want a delimiter, you still need the space right after the '''['''. +---- + +Example: +{{{![ BDD:JukeBoxDriver +Given a jukebox with price set to $1.00 +When a customer deposits $2.00 +And presses B5 +And presses C21 +Then Stairway to Heaven will play. +And Comforably Numb will play. +]!}}} +'''Displays as:''' +![ BDD:JukeBoxDriver +Given a jukebox with price set to $1.00 +When a customer deposits $2.00 +And presses B5 +And presses C21 +Then Stairway to Heaven will play. +And Comforably Numb will play. +]! + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/PlainTextTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/PlainTextTable/properties.xml new file mode 100644 index 0000000..a16a90f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/PlainTextTable/properties.xml @@ -0,0 +1,11 @@ + + +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/TodaysDate/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/TodaysDate/content.txt new file mode 100644 index 0000000..466c0cf --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/TodaysDate/content.txt @@ -0,0 +1,12 @@ +To diplay todays date: + +|!c '''Markup Text'''|!c '''Displayed as'''| +|!style_code(!-Today is !today.-!)|Today is !today.| +|!style_code(!-XML is !today -xml.-!)|XML is !today -xml.| +|!style_code[!-Right now it is !today -t.-!]|Right now it is !today -t.| +|!style_code[!-Tomorrow is !today +1.-!]|Tomorrow is !today +1.| +|!style_code[!-Last week was !today -7.-!]|Last week was !today -7.| +|!style_code[!-The month is !today (MMM).-!]|The month is !today (MMM).| + +As you can see, you can add or subtract days. You can include the time with -t. And you can use your own format for the time. (See !style_code(!-SimpleDataFormat-!) for the syntax.) + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/TodaysDate/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/TodaysDate/properties.xml new file mode 100644 index 0000000..1ea126a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/TodaysDate/properties.xml @@ -0,0 +1,10 @@ + + + + + + + +1237147701126 +-776073001262686991 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/content.txt new file mode 100644 index 0000000..9527185 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/content.txt @@ -0,0 +1,34 @@ +!1 Wiki Markup Language Reference +The !-FitNesse-! markup language is straightforward to learn, and powerful enough to enable you to create richly-formatted and customized wiki pages. Below is a reference of so-called "widgets" for formatting text and accomplishing other things on wiki pages. + +| !c '''Markup Syntax''' | +| [[Italics][>MarkupItalics]] | ''Setting a word or phrase in italics.'' | +| [[Bold][>MarkupBold]] | ''Setting a word or phrase in bold.'' | +| [[Strike][>MarkupStrike]] | ''Putting a strike through a word or phrase.'' | +| [[Style][>MarkupStyle]] | ''Setting the style of some text.'' | +| [[Cross Reference][>MarkupCrossReference]] | ''Add a cross reference to another page.'' | +| [[Headers][>MarkupHeaders]] | ''Setting a line as a title or section header.'' | +| [[Centering][>MarkupCenter]] | ''Centering a line.'' | +| [[Notes][>MarkupNote]] | ''Making a note.'' | +| [[Horizontal Rules][>MarkupHorizontalRule]] | ''Drawing a horizontal separator.'' | +| [[Images][>MarkupPicture]] | ''Placing a picture or image.'' | +| [[External links][>MarkupExternalLink]] | ''Creating a hyperlink to an external webpage.'' | +| [[Links Within Pages][>LinksWithinPages]] | ''Creating links to anchors within the same page.'' | +| [[Wiki page links][>MarkupInternalLink]] | ''Creating a hyperlink to an internal wiki page.'' | +| [[Alias links][>MarkupAliasLink]] | ''Turning reqular words or images into links'' | +| [[Lists][>MarkupLists]] | ''Creating bullet lists and numbered lists'' | +| [[Literal Text][>MarkupLiteralText]] | ''Preventing text from being interpreted.'' | +| [[Preformatted text][>MarkupPreformatted]] | ''Setting text as preformatted monofont'' | +| [[Comments][>MarkupComments]] | ''Putting comments in markup text.'' | +| [[Variables][>MarkupVariables]] | ''Defining and expressing variables'' | +| [[Classpaths][>MarkupPath]] | ''Marking a line as a directory path.'' | +| [[Tables][>MarkupTable]] | ''Creating tables.'' | +| [[Hash Tables][>MarkupHashTable]] | ''Creating lookup tables.'' | +| [[Plain Text Tables][>PlainTextTable]] | ''Creating tables from plain text without vertical strokes'' | +| [[Collapsable Sections][>MarkupCollapsableSection]] | ''Making a section of content collapsable and expandable'' | +| [[Table of Contents][>MarkupContents]] | ''Generate a table of contents for a SubWiki.'' | +| [[Including][>MarkupPageInclude]] | ''Pulling the content from one page into another.'' | +| [[Help][>MarkupHelp]] | ''Displaying the help property for the page.'' | +| [[Last Modification Time][>LastModificationTime]] | ''Showing the time that a page was last modified.'' | +| [[Today's Date][>TodaysDate]] | ''Showing todays date in various formats and styles.'' | +| [[Nesting][>MarkupNesting]] | ''Nesting markup within other markup elements.'' | diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/properties.xml new file mode 100644 index 0000000..fb9700d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/MarkupLanguageReference/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + +1237146606658 +-1006255556384496467 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/PageFooter/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/PageFooter/content.txt new file mode 100644 index 0000000..62b4d8c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/PageFooter/content.txt @@ -0,0 +1 @@ +!include -seamless + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/PageHeader/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/PageHeader/content.txt new file mode 100644 index 0000000..e69de29 diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/PageHeader/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/PageHeader/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/PageHeader/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/PageProperties/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/PageProperties/content.txt new file mode 100644 index 0000000..033a04f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/PageProperties/content.txt @@ -0,0 +1,36 @@ +FitNesse pages can have attributes that alter the way the pages are displayed, and how they behave. These can be enabled or disabled for a page by hitting the Properties menu item. + +!3 Page Type + * '''Static''': This is just a content page. + * '''Test''': This property instructs ''!-FitNesse-!'' to treat the page as a fitnesse test page: + * It enables the '''Test''' button, which submits the page to Fit to process all of the page's test tables. + * Pages with the Test property enabled will have the '''!-SetUp-!''' and '''!-TearDown-!''' text applied to them. See + + + Change page specific properties + + + 1238171805702 + 8555069348586341028 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/RefactoringWikiPages/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/RefactoringWikiPages/content.txt new file mode 100644 index 0000000..519a923 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/RefactoringWikiPages/content.txt @@ -0,0 +1,5 @@ +The '''Refactor''' button on each page allows you to delete or rename that page in the wiki. + + * '''Delete''' - If you delete a page, all references to that page will become dead. You'll see them with '''[?]''' following them. + * '''Rename''' - If you rename a page, all references to that page will be renamed. + * '''Move''' - If you move a page, it will be moved with all it's children. Any references to it or its children will be appropriately modified. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/RefactoringWikiPages/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/RefactoringWikiPages/properties.xml new file mode 100644 index 0000000..9ad4f4f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/RefactoringWikiPages/properties.xml @@ -0,0 +1,8 @@ + + + + + + 1213643693631 + 1221131539155543533 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/RootPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/RootPage/content.txt new file mode 100644 index 0000000..8dd5d43 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/RootPage/content.txt @@ -0,0 +1 @@ +To access the root of the whole !-FitNesse-! wiki use the following URL:{{{http:///root}}} You can put variable definitions, and '''!path''' directives on this page. All pages in the wiki will inherit these attributes. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/RootPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/RootPage/properties.xml new file mode 100644 index 0000000..d6745d1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/RootPage/properties.xml @@ -0,0 +1,7 @@ + + + + 20060717210007 + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/ShortcutKeys/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/ShortcutKeys/content.txt new file mode 100644 index 0000000..e9e530b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/ShortcutKeys/content.txt @@ -0,0 +1,10 @@ +Some of the buttons on the wiki page have shortcut keys. These may or may not work in your browser! +|'''Edit'''|''ALT-e''| +|'''Properties'''|''ALT-p''| +|'''Test'''|''ALT-t''| +|'''Search'''|''ALT-s''| +|'''Versions'''|''ALT-v''| + +Due to the above shortcut keys not working on most browsers a set of more modern shortcut keys have been provided. Pressing ? on any normal wiki page (not the edit page, etc.) will bring up a modal dialog showing the standard set of shortcut keys. + +!img http://files/fitnesse/images/keyboard_shortcuts.png diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/ShortcutKeys/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/ShortcutKeys/properties.xml new file mode 100644 index 0000000..912ee1b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/ShortcutKeys/properties.xml @@ -0,0 +1,10 @@ + + + + + true + + + + 1052054924832 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/SubWiki/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/SubWiki/content.txt new file mode 100644 index 0000000..16fe9b8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/SubWiki/content.txt @@ -0,0 +1,26 @@ +!1 The SubWiki: Organizing !-FitNesse-! Pages into Hierarchies +!2 Why Do We Need Page Hierachies? +FitNesse, you recall, is a [[wiki][EditingFitNessePages]], but more than a normal one! A normal wiki is a collection of pages with a flat structure. All the pages are peers. FitNesse, on the other hand, is meant to manage many projects. We'd like each project to have its own wiki hierarchy so that name collisions can be avoided, fixture code can be found easily, etc. We might even need hierarchies within those hierarchies. + +For example, project one and project two each have their own [[Test suites][SubPage-!'' markup language syntax. + +When a sub-page is displayed, any unqualified links are assumed to be at the current level. If you want to access a global page, you need to precede the link with a dot. For example, from where we are now on this page, the link !-RecentChanges-! is really a link to !-.FitNesse.RecentChanges-! (which does not exist), whereas the link .RecentChanges is a link to the global page that contains the list of most recently changed pages. + +!3 Navigating through Sub Wikis + * The '''!contents '''widget will create a list of all the immediate child pages of a parent page. + * Absolute references look like this: !-.TopPage.MyPage.YourPage-! where !-TopPage-! is at the highest level. + * Relative references look like this: !-YourPage.MyPage.HisPage-! where !-YourPage-! is a sibling of the page that holds the reference. + * Sub page references look like this: !->ChildPage.GrandChildPage-! where !-ChildPage-! is a child of the page that holds the reference. + * Backwards Search References look like this: !-<AncestorPage.SomePage-! where !-AncestorPage-! is a parent, grandparent, or somewhere up the parent chain. You can use this to search backwards through the page hierarchy until you find the named page. + +!3 [[!-Test Suites-!][ + + + + +1238174883665 +-2525399175413409353 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/SymbolicLinks/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/SymbolicLinks/content.txt new file mode 100644 index 0000000..0291bde --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/SymbolicLinks/content.txt @@ -0,0 +1,22 @@ +!img-r http://files/fitnesse/images/symlinkDiagram.gif +!3 What are SymbolicLinks? +Symbolic Links allow a user to easily create parent-child links between pages without permanently affecting the wiki structure. Refer to the diagram on the right. You will notice that the !-ApplicationTests-! page has a child page named !-SuiteTests-! which contains several other pages. The !-EnvironmentOne-! page has no static child pages but it does have a symbolic link to the !-SuiteTests-! page. This symbolic link acts like a child page in almost every way and give two full names to the !-SuiteTests-! page: + + * !-.ApplicationTests.SuiteTests-! is the real name, + * !-.EnviromentOne.SymbolicLink-! is a symbolic name for the same page. + +SymbolicLinks may also be made to external FitNesse directories. See below. + +!3 Why Should I Use SymbolicLinks? +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. + +Another reason is that you want to test two implementations for the same interface. +.FitNesse.SuiteAcceptanceTests.SuiteVersionsControllerTests is a practical example using symbolic links. + +!3 How do I use SymbolicLinks? +Navigate to the page where you'd like to add a symbolic link. Click the '''Properties''' button to load the ''properties'' view. There is a section titled '''Symbolic Links'''. There is a form here where may create a new symbolic link by suppling a single WikiWord name for the link and relative or absolute path to the page to which you'd like to link. Once created, the symbolic link will be listed in the '''Symbolic Links''' section of the same ''properties'' view. You may remove or rename existing links by clicking the corresponding '''Unlink''' or '''Create/Replace''' link. + +!3 External SymbolicLinks +For various reasons, you may want to keep a branch of your FitNesse wiki in a different location on your disk, than the rest of the wiki. You may link external branches into the main wiki by using SymbolicLinks. To do so, simply provide the file path to the external FitNesse directory in URL format preceded with '''file:/''', e.g. ''!-file:///User/MicahMartin/fitnesse/ExternalFitNesseRoot-!'' + +SymbolicLinks can also use environment variables to find a branch to add to your wiki, e.g. ''!-file://${HOME}/MicahMartin/fitnesse/ExternalFitNesseRoot-!'' diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/SymbolicLinks/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/SymbolicLinks/properties.xml new file mode 100644 index 0000000..fcc3379 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/SymbolicLinks/properties.xml @@ -0,0 +1,8 @@ + + + + true + + 1201721251657 + -3379710537192929046 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WhereUsed/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WhereUsed/content.txt new file mode 100644 index 0000000..6a86299 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WhereUsed/content.txt @@ -0,0 +1 @@ +If you click on the name of the page, !-FitNesse-! will print a list of every page that references that page. Try it by clicking on !-WhereUsed-! above. \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WhereUsed/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WhereUsed/properties.xml new file mode 100644 index 0000000..b024bce --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WhereUsed/properties.xml @@ -0,0 +1,7 @@ + + + + 20090228113827 + true + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WikiImport/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WikiImport/content.txt new file mode 100644 index 0000000..976b94f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WikiImport/content.txt @@ -0,0 +1,16 @@ +!3 What is WikiImport? +WikiImport is a feature that allows you to import an entire wiki or subwiki from another FitNesse site. All of the pages from the remote wiki will be copied to your local FitNesse installation and become part of your local wiki. + +!3 Why should I use WikiImport? +In a development environment it is most practical to have a main FitNesse server where all the tests are maintained and new tests are added. However, it is not practical for all the developers to run the tests on one server. Therefore each developer should have a FitNesse installation in their development environment. The test pages from the main server get imported by each developer so they can execute the most recent tests against their current code base. + +!3 How do I use WikiImport? +Create a page or use an existing page that will contain the imported wiki. Open the ''properties'' view of this page. There is a form title Wiki Import. Supply the URL to the remote wiki that you'd like to import and submit the form. This will take you to an import view where you will see all the imported pages being listed. It may take a few moments for the import to complete. You will know it's complete when the bottom of the page is visible and ends with an imported page count. + +Once a wiki has been imported, it may be updated at any time. Simple open the ''properties'' view of the importing page or any imported page. There will be a button in the '''Import Wiki''' section. Clicking this button initiate an update of all the imported pages beneath the currently selected page. + +!3 New Edit Buttons +Once you have imported a wiki, the '''Edit''' button will be turned off and two new edit buttons will be added: '''Edit Locally''' and '''Edit Remotely'''. '''Edit Locally''' behaves just like the '''Edit''' button that you've used all along. '''Edit Remotely''' allows you to easily edit the page from where the content is being imported. + +!3 Automatic Update Option +In the WikiImport section of the ''properties'' page, you'll see a check box that says: "Automatically update imported content when executing tests". Enabling this option will kick off an update for any test page prior to execution. Child pages will inherit this option from parent pages, which means you need only set on the root of you test hierarchy. \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WikiImport/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WikiImport/properties.xml new file mode 100644 index 0000000..640395d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WikiImport/properties.xml @@ -0,0 +1,9 @@ + + + + 20080617162634 + + + 1213737994217 + -6982862784974797638 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WikiWord/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WikiWord/content.txt new file mode 100644 index 0000000..b3109e8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WikiWord/content.txt @@ -0,0 +1,10 @@ +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. + + * '''!-BobMartin-!''' is a wiki word. + * '''!-SalesReport1972-!''' is a wiki word. + * '''!-USAforEver-!''' is not, because there are two capitals in a row. + * '''!-Usa1776-!''' is not because there is only one capital. + * '''!-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. +---- +!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]*)+}}} \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WikiWord/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WikiWord/properties.xml new file mode 100644 index 0000000..34ce5f2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/WikiWord/properties.xml @@ -0,0 +1,9 @@ + + + + 20090327123919 + + + 1238175559465 + -419557567139808752 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/content.txt new file mode 100644 index 0000000..e37798c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/content.txt @@ -0,0 +1,22 @@ +!2 Working With !-FitNesse-! Wiki Pages +!-FitNesse-! provides an easy-to-use [[wiki][http://wiki.org/wiki.cgi?WhatIsWiki]] to create web pages that are run as tests. Test pages have a button on them allowing all the tests on the page to be run, so any user can go to that page and click the button at any time, and see if the tests are passing. Also, !-FitNesse-! provides means to automatically run tests, so it can be easily added to your automated build scripts. + +So what does a test page look like? A page name has the form of a >WikiWord. A >WikiWord consists of two or more concatenated words, each word begins with a capital letter. + +Although FitNesse is about writing acceptance tests, you'll probably want to study these tips for using the wiki: + +|[[Editing !-FitNesse-! Pages][>EditingFitNessePages]] |''An intro to creating and changing ''!-FitNesse-!'' pages using the wiki markup language.''| +|[[Shortcut keys][>ShortcutKeys]] |''The shortcuts for the buttons.'' | +|[[Markup Language Reference][>MarkupLanguageReference]]|''A reference for formatting ''!-FitNesse-!'' pages using the wiki markup language.'' | +|[[Sub-wikis][>SubWiki]] |''How to create hierarchies of ''!-FitNesse-!'' pages.'' | +|[[Wiki Import][>WikiImport]] |''Importing wiki pages from a remote ''!-FitNesse-!'' server.'' | +|[[Page Properties][>PageProperties]] |''Enabling and disabling page properties (also called attributes).'' | +|[[Symbolic Links][>SymbolicLinks]] |''Dynamically altering the wiki page structure.'' | +|[[Refactoring pages][>RefactoringWikiPages]] |''Renaming, moving and deleting existing pages.'' | +|[[Where Used][>WhereUsed]] |''Finding out which pages reference the current page.'' | +|[[Headers and footers][>MarkupHeaderAndFooter]] |''Specifying Headers and Footers for wiki pages'' | +|[[Files section][>FilesSection]] |''The location for attachments, images, etc.'' | +|[[External HTML pages][>ExternalHtmlPages]] |''In case you've already written some pages in HTML and want to use then in FitNesse'' | + +!3 [[External editors][>ExternalEditor]] +Since FitNesse stores its wiki pages as files on disk, it's also possible to edit pages with a [[external editor][>ExternalEditor]], such as Notepad, Sublime text, Eclipse or !-IntelliJ-!. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/properties.xml new file mode 100644 index 0000000..d30aa8f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FitNesseWiki/properties.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/ActionFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/ActionFixture/content.txt new file mode 100644 index 0000000..a129499 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/ActionFixture/content.txt @@ -0,0 +1,109 @@ + +''Previous page: [[!-ColumnFixture-!][ -!!-
      21. -!'''!- check -!'''!- — executes a method and verifies its value. -!!-
      22. -!!-
      23. -!'''!- press -!'''!- — executes a -!'''!- void -!'''!- method without testing anything. -!!-
      24. -!!-
      25. -!'''!- enter -!'''!- — executes a method and passes an argument to it. -!!-
      26. -!!- -!!- You can imagine an -!'''!- ActionFixture -!'''!- as an automation tool to populate UI forms and click on buttons that are connected to methods. -! + +{{{ +!-!-!|ActionFixture| +|start|ActionFixtureTest| +|enter|firstPart|Hello| +|enter|secondPart|World| +|press|join| +|check|together|Hello, World| +}}} +# section Fixture class +!3 !-Fixture class-! +!- An important difference between -!'''!- ActionFixture -!'''!- and all other fixtures is that you should not extend the -!'''!- ActionFixture -!'''!- class in order to use it. Instead, you should extend the -!'''!- fit.Fixture -!'''!- class directly for your fixture and then pass it on to the -!'''!- ActionFixture -!'''!- using the -!'''!- start -!'''!- command. -! + +# section Java Source Code +!3 !-Java Source Code-! +{{{ +package info.fitnesse.fixturegallery; + +public class ActionFixtureTest extends fit.Fixture{ + private String first, second, both; + public void firstPart(String s){ + first=s; + } + public void secondPart(String s){ + second=s; + } + public void join(){ + both=first+ ", "+second; + } + public String together(){ + return both; + } +} +}}} +# section .NET Source Code +!3 !-.NET Source Code-! +{{{ +using System; + +namespace info.fitnesse.fixturegallery +{ + public class ActionFixtureTest: fit.Fixture + { + public String firstPart, secondPart, together; + public void join() + { + together=firstPart+ ", "+secondPart; + } + } +} +}}} +# section Python Source Code +!3 !-Python Source Code-! +{{{ + +from fit.Fixture import Fixture + +class ActionFixtureTest(Fixture): + _typeDict = {} + + def __init__(self): + Fixture.__init__(self) + self.__first = "" #< Private attributes (Python convention). + self.__second = "" + self.__both = "" + + # JAVA: void firstPart(String s) + _typeDict["firstPart"] = "String" + def firstPart(self, s): + self.__first = s + + # JAVA: void secondPart(String s) + _typeDict["secondPart"] = "String" + def secondPart(self, s): + self.__second = s + + # JAVA: void join() + _typeDict["join"] = "Default" #< AUTO-DETECT: None = void + def join(self): + self.__both = "%s, %s" % (self.__first, self.__second) + + # JAVA: String together() + _typeDict["together"] = "String" + def together(self): + return self.__both + +}}} +# section Notes +!3 !-Notes-! +!- In the Java version, -!'''!- ActionFixture -!'''!- only works on methods. in the .NET version, -!'''!- enter -!'''!- and -!'''!- check -!'''!- can get and set fields and properties as well. -! + +# section Usage +!3 !-Usage-! +!-You can use the -!'''!- ActionFixture -!'''!- to describe UI-style verifications.-! + +!- In general, -!'''!- ActionFixture -!'''!- has been replaced by -!'''!- DoFixture -!'''!- (see -![[!-DoFixture-!][ + + false + false + 20080104120005 + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/ColumnFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/ColumnFixture/content.txt new file mode 100644 index 0000000..9eeb916 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/ColumnFixture/content.txt @@ -0,0 +1,113 @@ + +''Next page: [[!-ActionFixture-!][ + + false + false + 20080104120005 + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/ImportFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/ImportFixture/content.txt new file mode 100644 index 0000000..7b67bc3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/ImportFixture/content.txt @@ -0,0 +1,25 @@ + +''Previous page: [[!-TableFixture-!][ + + false + false + 20080104120005 + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/RowFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/RowFixture/content.txt new file mode 100644 index 0000000..ea42211 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/RowFixture/content.txt @@ -0,0 +1,91 @@ +''Previous page: [[!-ActionFixture-!][ -!!-
      27. -!'''!- getTargetClass -!'''!- — returns the -!'''!- Type -!'''!- or -!'''!- Class -!'''!- object representing the type of objects contained in the array. -!!-
      28. -!!-
      29. -!'''!- query -!'''!- — returns the actual array of objects to be verified.-!!-
      30. -!!- -!# section Java Source Code +!3 !-Java Source Code-! +{{{ +package info.fitnesse.fixturegallery; + +import info.fitnesse.fixturegallery.domain.Player; +import fit.RowFixture; + +public class RowFixtureTest extends RowFixture{ + public Class getTargetClass() { + return Player.class; + } + public Object[] query() throws Exception { + return Player.players.toArray(); + } +} +}}} +# section .NET Source Code +!3 !-.NET Source Code-! +{{{ +using System; +using System.Collections.Generic; +using System.Text; + +namespace info.fitnesse.fixturegallery +{ + public class RowFixtureTest: fit.RowFixture + { + public override Type GetTargetClass() + { + return typeof(Player); + } + public override object[] Query() + { + return Player.players.ToArray(); + } + } +} +}}} +# section Python Source Code +!3 !-Python Source Code-! +{{{ +from fit.RowFixture import RowFixture +from info.fitnesse.fixturegallery.domain.Player import Player + +class RowFixtureTest(RowFixture): + def getTargetClass(self): + return Player + + def query(self): + return list(Player.players) #< Return copy of players +}}} +# section Notes +!3 !-Notes-! +!-If the object has some properties that can be considered part of the identity (such as a primary key), list those properties to the left, before auxiliary properties. This will make error reports easier to read. Consider the -![[!-Figure 1-!][ + + false + false + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/SummaryFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/SummaryFixture/content.txt new file mode 100644 index 0000000..1fd2031 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/SummaryFixture/content.txt @@ -0,0 +1,7 @@ + +''Previous page: [[!-Import-!][ + + false + false + 20080104120005 + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/TableFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/TableFixture/content.txt new file mode 100644 index 0000000..28afca6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/TableFixture/content.txt @@ -0,0 +1,113 @@ + +''Previous page: [[!-RowFixture-!][ + + false + false + 20081020135110 + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/content.txt new file mode 100644 index 0000000..19ff5f8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/BasicFitFixtures/content.txt @@ -0,0 +1,18 @@ +''Previous page: [[!-Source code-!][ColumnFixture]] +# section ActionFixture +[[!-ActionFixture-!][>ActionFixture]] +# section RowFixture +[[!-RowFixture-!][>RowFixture]] +# section TableFixture +[[!-TableFixture-!][>TableFixture]] +# section Import +[[!-Import-!][>ImportFixture]] +# section SummaryFixture +[[!-SummaryFixture-!][>SummaryFixture]] + +''Previous page: [[!-Source code-!][ + + false + false + 20090327095617 + false + false + false + true + false + true + 1238165777288 + -4400225550586654500 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/ArrayFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/ArrayFixture/content.txt new file mode 100644 index 0000000..5eca81b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/ArrayFixture/content.txt @@ -0,0 +1,85 @@ + +''Previous page: [[!-SequenceFixture-!][ -!!-
      31. -!!-Element order is important for -!'''!- ArrayFixture -!'''!-.-!!-
      32. -!!-
      33. -!'''!- ArrayFixture -!'''!- can work with generic collections as well as with arrays.-!!-
      34. -!!- -!# section Table Format +!3 !-Table Format-! +!- The first row of the table should list the fixture class name. The second row lists the structure of collection elements — names of fields, properties and methods. -! + +{{{ +!-!-!include -seamless SetUpFixture + +!-!-!|ArrayFixtureTest| +|name|post code|credit limit| +|John Smith|SW4 66Z|10| +|Michael Jordan|NE1 8AT|12| +}}} +# section Fixture class +!3 !-Fixture class-! +!-The fixture class should extend -!'''!- fitlibrary.ArrayFixture -!'''!-. Instead of a query method, -!'''!- ArrayFixture -!'''!- works with an internal property called -!'''!- actualCollection -!'''!- in the Java version. Initialise that collection in the constructor of your fixture to the actual results that should be compared to the table. In the .NET version, this has to be done by passing the collection to the base class constructor. -! + +# section Java Source Code +!3 !-Java Source Code-! +{{{ +package info.fitnesse.fixturegallery; +import info.fitnesse.fixturegallery.domain.Player; +import fitlibrary.ArrayFixture; + +public class ArrayFixtureTest extends ArrayFixture{ + public ArrayFixtureTest() { + setActualCollection(Player.players); + } +} +}}} +# section .NET Source Code +!3 !-.NET Source Code-! +{{{ +using System; +using System.Collections.Generic; +using System.Text; + +namespace info.fitnesse.fixturegallery +{ + public class ArrayFixtureTest: fitlibrary.ArrayFixture + { + public ArrayFixtureTest():base(Player.players) + { + } + } +} +}}} +# section Python Source Code +!3 !-Python Source Code-! +{{{ +from fitLib.ArrayFixture import ArrayFixture +from info.fitnesse.fixturegallery.domain.Player import Player + +class ArrayFixtureTest(ArrayFixture): + def __init__(self): + ArrayFixture.__init__(self) + self.paramCollection = Player.players + self.setActualCollection() + + def getTargetClass(self): + return Player #< TYPE-HINT: For ValueObject class. + +}}} +# section Notes +!3 !-Notes-! +!- In the Java version, -!'''!- ArrayFixture -!'''!- can work correctly with JavaBeans properties as well (so if you have a getter such as -!'''!- getCreditLimit -!'''!-, you can name the column -!'''!- credit limit -!'''!-. -! + +!- In the .NET version, properties, fields and methods are treated equally, you can use any one of them in the fixture table -! + +!- FitLibrary also has a -!'''!- SetFixture -!'''!- that ignores element order and a -!'''!- SubSetFixture -!'''!- that will ignore additional elements in the actual results. Those two fixtures are very similar to the -!'''!- ArrayFixture -!'''!- in the table format and fixture class structure. -! + +# section Usage +!3 !-Usage-! +!- You can use the -!'''!- ArrayFixture -!'''!- instead of -!'''!- RowFixture -!'''!- when the element order is important or to avoid conversion of an object list into an array. -! + +'''!- DoFixture -!'''!- will automatically wrap methods that return a list or an array into an -!'''!- ArrayFixture -!'''!-, so you can use this class implicitly with -!'''!- DoFixture -!'''!- to test lists of objects without having to write an additional -!'''!- RowFixture -!'''!- class. For an example, see -![[!-Flow Mode-!][ + + false + false + 20080104120005 + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/CalculateFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/CalculateFixture/content.txt new file mode 100644 index 0000000..b522831 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/CalculateFixture/content.txt @@ -0,0 +1,73 @@ + +''Previous page: [[!-SetUpFixture-!][ + + false + false + 20080104120005 + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/CombinationFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/CombinationFixture/content.txt new file mode 100644 index 0000000..de6c9fe --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/CombinationFixture/content.txt @@ -0,0 +1,65 @@ + +''Previous page: [[!-ArrayFixture-!][ + + false + false + 20080104120005 + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/ConstraintFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/ConstraintFixture/content.txt new file mode 100644 index 0000000..8c9da1c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/ConstraintFixture/content.txt @@ -0,0 +1,66 @@ + +''Previous page: [[!-CombinationFixture-!][ + + false + false + 20080104120005 + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/DoFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/DoFixture/content.txt new file mode 100644 index 0000000..66eb618 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/DoFixture/content.txt @@ -0,0 +1,148 @@ + +''Previous page: [[!-CalculateFixture-!][ -!!-
      35. -!'''!- reject -!'''!- will invert the logic of a test, returning -!'''!- TRUE -!'''!- will make the test fail if the row is prefixed with -!'''!- reject -!'''!-. -!!-
      36. -!!-
      37. -!'''!- show -!'''!- will print out the value of a calculation in the test results (similar to an empty cell in -!'''!- ColumnFixture -!'''!-). -!!-
      38. -!!-
      39. -!'''!- check -!'''!- allows you to verify results of non-boolean calculations. Prefix the row with -!'''!- check -!'''!- and put the expected value of the calculation on the end of the row, in a new cell. -!!-
      40. -!!- -!!- In the Java implementation of FIT, -!'''!- check -!'''!- and -!'''!- show -!'''!- map directly to JavaBean properties, so you do not need to write the -!'''!- get -!'''!- prefix. However, these keywords cannot be used on public fields. In the .NET implementation, you can use them on fields, properties and methods equally. In addition, you can use the -!'''!- set -!'''!- keyword in .NET to set a field or property value. -! + +{{{ +!-!-!|DoFixtureTest| +|fill|10|times with|x| +|check|char at|4|x| +|set list|A,B,C,D| +|show|char at|2| +}}} +# section Usage +!3 !-Usage-! +!- Use -!'''!- DoFixture -!'''!- to describe workflow tests or tests that do not follow any particular repetitive structure. -!'''!- DoFixture -!'''!- is very good for coordinating other fixtures (see -![[!-Flow Mode-!][ + + false + false + 20081020135110 + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SequenceFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SequenceFixture/content.txt new file mode 100644 index 0000000..5c65e5e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SequenceFixture/content.txt @@ -0,0 +1,108 @@ + +''Previous page: [[!-DoFixture-!][ + + false + false + 20081020135110 + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SetFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SetFixture/content.txt new file mode 100644 index 0000000..5a93b6c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SetFixture/content.txt @@ -0,0 +1,15 @@ + +''Previous page: [[!-ConstraintFixture-!][ + + false + false + 20080104120005 + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SetUpFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SetUpFixture/content.txt new file mode 100644 index 0000000..43514c8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SetUpFixture/content.txt @@ -0,0 +1,92 @@ + +''Next page: [[!-CalculateFixture-!][ + + false + false + 20080104120005 + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SubsetFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SubsetFixture/content.txt new file mode 100644 index 0000000..02a5f79 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/SubsetFixture/content.txt @@ -0,0 +1,11 @@ + +''Previous page: [[!-SetFixture-!][ + + false + false + 20080104120005 + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/content.txt new file mode 100644 index 0000000..e35fbc0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/FitLibraryFixtures/content.txt @@ -0,0 +1,24 @@ +''Previous page: [[!-Basic FIT fixtures-!][SetUpFixture]] +# section CalculateFixture +[[!-CalculateFixture-!][>CalculateFixture]] +# section DoFixture +[[!-DoFixture-!][>DoFixture]] +# section SequenceFixture +[[!-SequenceFixture-!][>SequenceFixture]] +# section ArrayFixture +[[!-ArrayFixture-!][>ArrayFixture]] +# section CombinationFixture +[[!-CombinationFixture-!][>CombinationFixture]] +# section ConstraintFixture +[[!-ConstraintFixture-!][>ConstraintFixture]] +# section SetFixture +[[!-SetFixture-!][>SetFixture]] +# section SubsetFixture +[[!-SubsetFixture-!][>SubsetFixture]] + +''Previous page: [[!-Basic FIT fixtures-!][ + + false + false + 20090327095715 + false + false + false + true + false + true + 1238165835856 + -5960900649398816063 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/GalleryIntroduction/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/GalleryIntroduction/content.txt new file mode 100644 index 0000000..f26eecc --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/GalleryIntroduction/content.txt @@ -0,0 +1,22 @@ +''Next page: [[!-Source code-!][ + + false + false + 20090327095204 + false + false + false + true + false + true + 1238165524529 + 4832168186272978064 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/FixtureArguments/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/FixtureArguments/content.txt new file mode 100644 index 0000000..daed85c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/FixtureArguments/content.txt @@ -0,0 +1,116 @@ + +''Next page: [[!-Flow Mode-!][ set=new HashSet(); + for(String s: args){ + for (String word: s.split(" ")) set.add(new Word(word)); + } + this.setActualCollection(set); + super.doTable(arg0); + } +} +}}} +# section .NET Source Code +!3 !-.NET Source Code-! +{{{ +using System; +using System.Collections.Generic; +using System.Text; + +namespace info.fitnesse.fixturegallery +{ + + public class ArgumentsTest: fit.RowFixture + { + public override Type GetTargetClass() + { + return typeof(Text); + } + public override object[] Query() + { + List t = new List(); + foreach (String s in Args) + { + foreach (String w in s.Split(new char[] { ' ' })) + { + t.Add(new Text(w)); + } + + } + return t.ToArray(); + } + } +} +}}} +# section Python Source Code +!3 !-Python Source Code-! +{{{ +# REQUIRE: Python >= 2.4, due to set() usage + +from fitLib.SetFixture import SetFixture +import types + +class Word(object): + """Simple ValueObject class to store a word as string.""" + _typeDict = { "word": "String" } + + def __init__(self, word): + assert isinstance(word, types.StringTypes) + self.word = word + +class ArgumentsTest(SetFixture): + + def getTargetClass(self): + return Word #< CLASS-HINT: For _typeDict lookup. + + def doTable(self, table): + wordSet = set() + for s in self.args: + for word in s.split(" "): + wordSet.add( Word(word) ) + # -- WEIRD: setActualCollection() takes no arg -> Preassign first. + self.paramCollection = wordSet + self.setActualCollection() + SetFixture.doTable(self, table) +}}} +!- Note that arguments are just plain strings. Symbols do not work automatically with arguments, so trying to pass -!'''!- < + + false + false + 20081020135109 + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/FixtureSymbols/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/FixtureSymbols/content.txt new file mode 100644 index 0000000..2ddd3b3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/FixtureSymbols/content.txt @@ -0,0 +1,110 @@ + +''Previous page: [[!-System under test-!][>name -!'''!- to store a cell value into a symbol, or -!'''!- <>houston| + + +!-!-!|ColumnFixtureTest| +|firstpart|secondpart|together?| +|< + + false + false + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/FlowMode/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/FlowMode/content.txt new file mode 100644 index 0000000..1f16646 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/FlowMode/content.txt @@ -0,0 +1,105 @@ + +''Previous page: [[!-Fixture Arguments-!][ listPlayers(){ + return Player.players; + } +} +}}} +# section .NET Source Code +!3 !-.NET Source Code-! +{{{ +using System; +using System.Collections.Generic; +using System.Text; +using fit; +namespace info.fitnesse.fixturegallery +{ + public class DoFixtureFlowTest : fitlibrary.DoFixture + { + public Fixture PreparePlayers() + { + return new SetUpFixtureTest(); + } + public List ListPlayers() + { + return Player.players; + } + } +} +}}} +# section Python Source Code +!3 !-Python Source Code-! +{{{ +from fitLib.DoFixture import DoFixture +from fit.RowFixture import RowFixture +from info.fitnesse.fixturegallery.SetUpFixtureTest import SetUpFixtureTest +from info.fitnesse.fixturegallery.domain.Player import Player +import types + +class DoFixtureFlowTest(DoFixture): + _typeDict = {} + + _typeDict["preparePlayers.types"] = [ SetUpFixtureTest ] + def preparePlayers(self): + return SetUpFixtureTest() + + _typeDict["listPlayers.types"] = [ "$Array" ] #< ACTUALLY: List of Players + def listPlayers(self): + # -- DESIRED: return Player.players + # But need to add type hints for list.scalarType . + return ( Player.players, Player._typeDict ) + # ALTERNATIVES: + # return RowFixture(Player.players, Player._typeDict) + # return ArrayFixture(Player.players, Player._typeDict) +}}} + +''Previous page: [[!-Fixture Arguments-!][ + + false + false + 20080104120005 + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/MarkupVariables/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/MarkupVariables/content.txt new file mode 100644 index 0000000..0d756f8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/MarkupVariables/content.txt @@ -0,0 +1,19 @@ +''Previous page: [[!-Symbols-!][ + + false + false + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/SystemUnderTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/SystemUnderTest/content.txt new file mode 100644 index 0000000..1d6a573 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/SystemUnderTest/content.txt @@ -0,0 +1,84 @@ + +''Previous page: [[!-Target objects-!][ queue = new Queue(); + public SystemUnderTest() + { + this.mySystemUnderTest = queue; + } + public void GenerateMessages(int howmuch) + { + for (int i = 0; i < howmuch; i++) + queue.Enqueue("M" + i); + } + } +} +}}} +# section Python Source Code +!3 !-Python Source Code-! +{{{ +from fitLib.DoFixture import DoFixture +from info.fitnesse.fixturegallery.domain.Queue import Queue + +class SystemUnderTest(DoFixture): + _typeDict = { + # -- NEEDED-FOR: SystemUnderTestExample + "GenerateMessages.RenameTo": "generateMessages" + } + + def __init__(self): + self.queue = Queue() + self.setSystemUnderTest(self.queue) + + _typeDict["generateMessages.types"] = [ None, "Integer" ] + def generateMessages(self, i): + for dummy in xrange(i): + self.queue.enqueue("M%d" % i) +}}} + +''Previous page: [[!-Target objects-!][ + + false + false + 20081020135109 + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/TargetObject/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/TargetObject/content.txt new file mode 100644 index 0000000..d90872e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/TargetObject/content.txt @@ -0,0 +1,33 @@ + +''Previous page: [[!-Flow Mode-!][ + + false + false + 20081020135109 + false + false + false + true + false + true + 1199448005533 + 2681058637493722228 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/content.txt new file mode 100644 index 0000000..98ffdd6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/ImportantConcepts/content.txt @@ -0,0 +1,16 @@ +''Previous page: [[!-FitLibrary Fixtures-!][FixtureArguments]] +# section Flow Mode +[[!-Flow Mode-!][>FlowMode]] +# section Target objects +[[!-Target objects-!][>TargetObject]] +# section System under test +[[!-System under test-!][>SystemUnderTest]] +# section Symbols +[[!-Symbols-!][>FixtureSymbols]] +# section Markup Variables +[[!-Markup Variables-!][>MarkupVariables]] + +''Previous page: [[!-FitLibrary Fixtures-!][ + + false + false + 20090327095828 + false + false + false + true + false + true + 1238165908548 + 7957552217624650543 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/PageFooter/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/PageFooter/content.txt new file mode 100644 index 0000000..c06111d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/PageFooter/content.txt @@ -0,0 +1 @@ +[[Table of contents][ + + true + true + true + true + true + true + true + true + 1212872364255 + -4013179935543297587 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/SourceCode/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/SourceCode/content.txt new file mode 100644 index 0000000..0644b9b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/SourceCode/content.txt @@ -0,0 +1,239 @@ +''Previous page: [[!-Introduction-!][ players=new ArrayList(); + public static void addPlayer(String name, String postCode, double balance){ + players.add(new Player(name,postCode,balance)); + } +} +}}} +{{{ +package info.fitnesse.fixturegallery.domain; + +import java.util.LinkedList; + +public class Queue { + private LinkedList ll=new java.util.LinkedList(); + public String dequeue(){ + return ll.poll(); + } + public void enqueue(String s){ + ll.add(s); + } + public int getCount(){ + return ll.size(); + } +} +}}} +{{{ +package info.fitnesse.fixturegallery.domain; + +public class TaxCalculator +{ + public double GetTax(String code, double price) + { + if (code.startsWith("B")) return 0; + return 0.1 * price; + } +} +}}} +{{{ +package info.fitnesse.fixturegallery.domain; + +public class Words { + public String firstPart; + public String secondPart; + public String together(){ + return firstPart+", "+secondPart; + } + public String getSentence(){ + return together(); + } + public static Words[] firstExample(){ + Words[] someWords=new Words[2]; + someWords[0]=new Words(); + someWords[0].firstPart="Hello"; + someWords[0].secondPart="World"; + someWords[1]=new Words(); + someWords[1].firstPart="Houston"; + someWords[1].secondPart="We Have a Problem"; + return someWords; + } +} +}}} +# section .NET domain code +!3 !-.NET domain code-! +{{{ +using System; +using System.Collections.Generic; +using System.Text; + +namespace info.fitnesse.fixturegallery +{ + + public class Player + { + public static List players=new List(); + + private string _name; + + public string Name + { + get { return _name; } + set { _name = value; } + } + private string _postCode; + + public string PostCode + { + get { return _postCode; } + set { _postCode= value; } + } + private decimal _balance; + + public decimal Balance + { + get { return _balance; } + set { _balance = value; } + } + public decimal CreditLimit() + { + return _balance; + } + } + public class Text + { + public String word; + public Text(String w) + { + word = w; + } + public int TotalLength + { + get { return word.Length; } + } + } + public class TaxCalculator + { + public decimal GetTax(String code, decimal price) + { + if (code.StartsWith("B")) return 0; + return 0.1m * price; + } + } + + +} +}}} +# section Python domain code +!3 !-Python domain code-! +{{{ +class Player(object): + _typeDict = { + "name": "String", + "postCode": "String", + "balance": "Float" + } + + def __init__(self, name="", postCode="", balance=0.0): + self.name = name + self.postCode = postCode + self.balance = balance + + def getCreditLimit(self): + return self.balance + + _typeDict["creditLimit"] = "Float" + creditLimit = property(getCreditLimit) + + # -- DATA STORE: Players object store, simplistic database. + players = [] #< CLASS-ATTRIBUTE + @classmethod + def addPlayer(cls, name, postCode, balance): + cls.players.append(Player(name, postCode, balance)) +}}} +{{{ +class Queue(object): + _typeDict = { + "Enqueue.RenameTo": "enqueue" #< NEEDED-FOR: SystemUnderTestExample + } + + def __init__(self): + self.ll = [] + + _typeDict["dequeue"] = "String" + _typeDict["dequeue.types"] = [ "String" ] + def dequeue(self): + return self.ll.pop(0) + + _typeDict["enqueue"] = "String" + _typeDict["enqueue.types"] = [ None, "String" ] + def enqueue(self, s): + return self.ll.append(s) + + def getCount(self): + return len(self.ll) + _typeDict["count"] = "Integer" + count = property(getCount) +}}} +{{{ +import types + +class TaxCalculator(object): + + def getTax(self, code, price): + assert isinstance(code, types.StringTypes) + assert type(price) == types.FloatType + if code.startswith("B"): + return 0 + return 0.1 * price +}}} +{{{ +class Words(object): + _typeDict = { + "firstPart": "String", + "secondPart": "String" + } + + def __init__(self, firstPart="", secondPart=""): + self.firstPart = firstPart + self.secondPart = secondPart + + _typeDict["together"] = "String" + def together(self): + return "%s, %s" % (self.firstPart, self.secondPart) + + _typeDict["getSentence"] = "String" + def getSentence(self): + return self.together() + + @staticmethod + def firstExample(): + someWords = [ None, None ] + someWords[0] = Words(firstPart="Hello", secondPart="World") + someWords[1] = Words(firstPart="Houston", secondPart="We Have a Problem") + return someWords +}}} + +''Previous page: [[!-Introduction-!][ + + false + false + 20090327095310 + false + false + false + true + false + true + 1238165590538 + 3763817529343837430 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/TableOfContents/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/TableOfContents/content.txt new file mode 100644 index 0000000..9cd0178 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/TableOfContents/content.txt @@ -0,0 +1,2 @@ +!2 !-Table of contents-! +!-
          -!!-
        • -![[!-Introduction-!][-!!-
        • -![[!-Source code-!][-!!-
        • -![[!-Basic FIT fixtures-!][-!!-
        • -![[!-ColumnFixture-!][-!!-
        • -![[!-ActionFixture-!][-!!-
        • -![[!-RowFixture-!][-!!-
        • -![[!-TableFixture-!][-!!-
        • -![[!-Import-!][-!!-
        • -![[!-SummaryFixture-!][-!!-
        -!!--!!-
      41. -![[!-FitLibrary Fixtures-!][-!!-
      42. -![[!-SetUpFixture-!][-!!-
      43. -![[!-CalculateFixture-!][-!!-
      44. -![[!-DoFixture-!][-!!-
      45. -![[!-SequenceFixture-!][-!!-
      46. -![[!-ArrayFixture-!][-!!-
      47. -![[!-CombinationFixture-!][-!!-
      48. -![[!-ConstraintFixture-!][-!!-
      49. -![[!-SetFixture-!][-!!-
      50. -![[!-SubsetFixture-!][-!!--!!-
      51. -!!-
      52. -![[!-Important concepts-!][-!!-
      53. -![[!-Fixture Arguments-!][-!!-
      54. -![[!-Flow Mode-!][-!!-
      55. -![[!-Target objects-!][-!!-
      56. -![[!-System under test-!][-!!-
      57. -![[!-Symbols-!][-!!-
      58. -![[!-Markup Variables-!][-!!--!!-
      59. -!!--! \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/TableOfContents/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/TableOfContents/properties.xml new file mode 100644 index 0000000..01033af --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/TableOfContents/properties.xml @@ -0,0 +1,14 @@ + + + false + false + 20090327095125 + false + false + false + true + false + true + 1238165485766 + -6216930893620074344 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/content.txt new file mode 100644 index 0000000..017f466 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/content.txt @@ -0,0 +1,11 @@ +!c !3 !-FitNesse-! Fixture Gallery + +!c version 2.0, 2008-06-09 + +!c [[Gojko Adzic][http://gojko.net]] +!c [[Mike Stockdale][http://www.syterra.com]] +!c Jens Engel + +Fixture Gallery is a cookbook for !-FIT/FitNesse-! tests. It provides developers with a quick overview of the most important fixture types and concepts for agile acceptance testing using the FIT framework. For each fixture type, this document explains the table format and fixture class structure and provides advice when to use and when not to use it. Each example is accompanied by the source code for Java, .NET and Python FIT implementations, in a form that can be easily copied and used as a template for similar fixtures. This document is available in three forms: a FitNesse wiki site that you are viewing at the moment and a [[print-ready PDF][http://sourceforge.net/project/showfiles.php?group_id=216871]]. + +!include -seamless >TableOfContents \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/properties.xml new file mode 100644 index 0000000..975b0a0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/FixtureGallery/properties.xml @@ -0,0 +1,9 @@ + + + + + + + 1212872478633 + -935198529820793595 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/PageFooter/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/PageFooter/content.txt new file mode 100644 index 0000000..11cbb13 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/PageFooter/content.txt @@ -0,0 +1,2 @@ +!c User Guide Contents +!c [[Introduction][.FitNesse.UserGuide#introduction]] - [[Working with the Wiki][.FitNesse.UserGuide.FitNesseWiki]] - [[Writing Acceptance Tests][.FitNesse.UserGuide.WritingAcceptanceTests]] - [[Administration][.FitNesse.UserGuide.AdministeringFitNesse]] - [[Quick Reference Guide][.FitNesse.UserGuide.QuickReferenceGuide]] - [[Full Reference Guide][.FitNesse.FullReferenceGuide]] diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/PageFooter/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/PageFooter/properties.xml new file mode 100644 index 0000000..081e7f4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/PageFooter/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/ProjectDeathByRequirements/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/ProjectDeathByRequirements/content.txt new file mode 100644 index 0000000..381e73b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/ProjectDeathByRequirements/content.txt @@ -0,0 +1,33 @@ +!1 How to Kill a Software Project +There are many ways to kill a software project, but this is one of the most common. If you have been in software development for awhile, you may have seen the following scenario before: +!3 A Project Launches + * With the world's best intentions, a talented development team launches a project, full of gusto and high hopes. + * They articulate their requirements for the system to each other using a natural language such as English, in formal or informal documents. Included are some diagrams, charts, user interface mockups and screenshots, and/or other artifacts. + * Design and programming take place. + * Weeks and months go by. + * Some black-box functional testing takes place. + * Wait a minute. Something is wrong here... +!3 Problems! +At some point, usually late in the project, the team discovers that among other problems, they are finding one or more of the following problems with the features being delivered: + * They are '''not''' exactly what the customers/analysts/product managers think they '''asked for'''. + * They are '''not''' exactly what those folks '''wanted or needed'''. + * They are '''not useable''' by the system's eventual users. + * Subsystems '''cannot be integrated''' with one another, because their interfaces are incompatible. + * There is increasing dissention and mutual recrimination between team members about these issues. ("I did it the way you told me to!" "No you didn't! You never do!") People are getting angrier; morale is on the way down. +Management steps in and takes action: + * Emergency meetings are scheduled. Even longer than normal, these affairs are particularly acrimonious. + * Everybody works longer and longer hours. We must save the deadline and the system! +Despite heroic efforts, problems are not resolved as well as were hoped. The deadline and system remain under threat. + +And so on. What went wrong? How did we get in this boat together? +!2 What Went Wrong +Many of these problems boil down to the following: + * Natural languages are necessary to specify requirements, but '''they are not sufficient'''. The team misinterpreted the natural language requirements descriptions (despite all the charts, UI mockups, etc). + * Throughout the project, the team received '''too little feedback''' about features being built. + * The team did not begin receiving feature feedback '''early enough'''. + * Throughout the project, the team received feature feedback '''too infrequently'''. + * Post-facto, manual, GUI-based functional testing (despite its enormous costs) does a lousy job of exercising all the paths through a system's business logic. It's easy for such testing to miss parts of the system. So the team got poor feedback about whether all the right features were being delivered as required. + * The combination of natural language requirements descriptions and executable AcceptanceTests is '''necessary and sufficient''' to describe requirements '''completely, precisely, and deterministically'''. + +!2 With FitNesse AcceptanceTests, You Can Avoid These Problems +[[Check it out!][AcceptanceTests]] diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/ProjectDeathByRequirements/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/ProjectDeathByRequirements/properties.xml new file mode 100644 index 0000000..2f04efe --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/ProjectDeathByRequirements/properties.xml @@ -0,0 +1,7 @@ + + + + Why use automated acceptance tests? What goes wrong when we don't use them? + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/QuickReferenceGuide/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/QuickReferenceGuide/content.txt new file mode 100644 index 0000000..98903f1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/QuickReferenceGuide/content.txt @@ -0,0 +1,326 @@ +!***< HIDDEN! + +###### TEMPLATE + +#!anchor ? + +#| ? |${CODE} ? ${CODEend}| + +!define TopFONT {!--!} +!define FONTend {!--!} +!define TopOfPAGE (${TopFONT}${SPC}${SPC}${SPC}${SPC}${SPC}${SPC}${SPC}${SPC}[[${LPAREN}to top${RPAREN}][#TopOfPAGE]]${FONTend}) +!define FitNESSE {!-FitNesse-!} +| !define OPT {''[''} | !define OPTend {'']''} | !define OR {''!- |-!''} | +| !define DOT {'''.'''} | !define LT {'''<'''} | !define GT {'''>'''} | +| !define BAR {'''!- | -!'''} | !define LBRACE ('''{''') | !define RBRACE ('''}''') | +| !define DIVend {!--!} | !define LPAREN {'''('''} | !define RPAREN {''')'''} | +| !define BANG {'''!-!-!'''} |!define SPC {!- -!}''' | !define NL {!-
        -!} | +| !define TEXT {''text''} | | !define SLASH {'''/'''} | !define NUL {} | +| !define PageNAME {''!-PageName-!''} | !define PagePATH {''!-PagePath-!''} | +| !define LabelNAME {''label-name''} | !define AnyPagePATH {''!-AnyPagePath-!''} | +| !define CODE {!--!} | !define CODEend (${FONTend}) | + +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +!define BUTTON {!--!} +!define BUTTONend {!- -!} +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +!define FitNesseCHARACTERSET (${OPT}'''-Dfile.encoding=UTF-8'''${OPTend}) +!define FitNesseOptCLASSPATH ('''-cp fitnesse.jar'''${OPT}''';'''${NUL}''other.jar.or.path''${OPTend}...) +!define FitNesseOptEXPIRE ('''-e''' ''days'') +!define FitNesseOptOMIT ('''-o''') +!define FitNesseOptPORT ('''-p''' ''port#'') +!define FitNesseOptROOT ('''-r''' ''N${NUL}ameOfRootPage'') +!define FitNesseOptDIR ('''-d''' ''/path/to/fitnesse/root'') +!define FitNesseOptLOG ('''-l''' ''/log/file/path/and/name'') +!define FitNesseOptOneAUTH (''username''${NUL}''':'''${NUL}''password'') +!define FitNesseOptFileAUTH (''/auth/file/path/and/name'') +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +!define HorizontalLINES (|${CODE}''over-text''${NUL}'''!------!'''${NUL}''under-text''${CODEend}|thinnest| +| ${CODE}''over-text''${NUL}'''!-------!'''${NUL}''under-text''${CODEend} |safest - no conflict with workflow phase separators| +|${CODE}''over-text''${NUL}'''!-----------!'''${NUL}''under-text''${CODEend}|thicker | +) +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +!define HEADINGS (${BANG}'''1''' ''largest heading text'' +${BANG}'''2''' ''middle heading text'' +${BANG}'''3''' ''smaller heading text'' +and so on up to ${BANG}'''6''' +) +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +!define CollapsibleEXPANDED (${BANG}'''*''' ${OPT}''title''${OPTend} +${SPC}${SPC}'' multi-line wiki text '' +${SPC}${SPC}'' N.B.: Multiple asterisks are allowed, e.g.,'' ${BANG}'''****''' ${TEXT} +'''*'''${BANG} +) +!define CollapsibleCOLLAPSED (${BANG}'''*'''${GT} ${OPT}''title''${OPTend} +${SPC}${SPC}'' multi-line wiki text '' +${SPC}${SPC}'' N.B.: Multiple asterisks are allowed, e.g.,'' '''${BANG}****'''${GT} ${TEXT} +'''*'''${BANG} +) +!define CollapsibleINVISIBLE (${BANG}'''*'''${LT} ${OPT}''title''${OPTend} +${SPC}${SPC}'' multi-line wiki text '' +${SPC}${SPC}'' N.B.: Multiple asterisks are allowed, e.g.,'' ${BANG}'''****'''${LT} ${TEXT} +'''*'''${BANG} +) +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +!define LSQUARE {'''['''} +!define RSQUARE {''']'''} +!define PageLINKS (|${CODE} ${DOT}R${NUL}ootPage${OPT}${DOT}C${NUL}hildPage${OPTend} ${CODEend}| from root | +|${CODE} S${NUL}ameLevelPage${OPT}${DOT}C${NUL}hildPage${OPTend} ${CODEend}|sibling | +|${CODE} ${GT}C${NUL}hildPage${OPT}${DOT}C${NUL}hildPage${OPTend} ${CODEend}|child or symbolic| +|${CODE} ${LSQUARE}${LSQUARE}${TEXT}${RSQUARE}${LSQUARE}${AnyPagePATH}${RSQUARE}${RSQUARE} ${CODEend} | in an alias | +) +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +!define CollapSIBLE (|${CODE} ${CollapsibleEXPANDED} ${CODEend}| expanded | | +|${CODE} ${CollapsibleCOLLAPSED} ${CODEend}|collapsed| | +|${CODE} ${CollapsibleINVISIBLE} ${CODEend}|invisible|''useful for hidding define's, etc.''| +) +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +!define HASH {'''!-#-!'''} | + +!define JumpTO ( +| ${CODE} ${TEXT} ${HASH}${LabelNAME} ${TEXT} ${CODEend} | in-line | +| ${CODE} ${DOT}${HASH}${LabelNAME} ${CODEend} | left-justified | +| ${CODE} ${LSQUARE}${LSQUARE}${TEXT}${RSQUARE}${LSQUARE}${HASH}${LabelNAME}${RSQUARE}${RSQUARE} ${CODEend} | in an alias | +) + +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +!define ExternalLINKS (|${CODE} '''http:'''${SLASH}${SLASH}''url-path'' ${NL} ${CODEend}| Web | +| ${CODE} '''http:'''${SLASH}${SLASH}'''files'''${SLASH}''localPath'' ${CODEend} | Local | +| ${CODE} ${LSQUARE}${LSQUARE}${TEXT}${RSQUARE}${LSQUARE}/files'''${SLASH}''localPath''${NUL}${RSQUARE}${RSQUARE} ${CODEend}''' | Alias | +| ${CODE} ${LSQUARE}${LSQUARE}${TEXT}${RSQUARE}${LSQUARE}${AnyPagePATH}${HASH}${LabelNAME}${RSQUARE}${RSQUARE} ${CODEend} | Alias | +| ${CODE} ${TEXT}'''@'''${TEXT}${DOT}${TEXT} ${CODEend} | mailto | +) + +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +!define IncludePAGE (|${CODE} ${BANG}'''include''' ${AnyPagePATH} ${CODEend}| expanded border | +| ${CODE} ${BANG}'''include -c''' ${AnyPagePATH} ${CODEend} | collapsed border | +| ${CODE} ${BANG}'''include -seamless''' ${AnyPagePATH} ${CODEend} | no border | +| ${CODE} ${BANG}'''include -setup''' ${AnyPagePATH} ${CODEend} | appears like S${NUL}etUp | +| ${CODE} ${BANG}'''include -teardown''' ${AnyPagePATH} ${CODEend} | appears like T${NUL}earDown | +| ${CODE} ${BAR}${SPC}${BANG}'''include ''' ${AnyPagePATH}${SPC}${BAR} ${CODEend} | in a table cell | + +) +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +!define TocInsert (| Contents List | ${CODE} ${BANG}'''contents''' ${CODEend} | +| Contents Tree | ${CODE} ${BANG}'''contents -R''' ${CODEend} | +| Contents Sub-tree | ${CODE} ${BANG}'''contents -R'''${OPT}''nn''${OPTend}${CODEend} | +| Contents List - Graceful | ${CODE} ${BANG}'''contents -g''' ${CODEend} | +| Contents List - Properties | ${CODE} ${BANG}'''contents -p''' ${CODEend} | +| Contents List - Suite Filters | ${CODE} ${BANG}'''contents -f''' ${CODEend} | +| Contents List - Help Text | ${CODE} ${BANG}'''contents -h''' ${CODEend} | +) + +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +!define PictureINSERT (|${CODE} ${BANG}'''img''' ''url-to-image-file'' ${CODEend}| in-line | +| ${CODE} ${BANG}'''img-l''' ''url-to-image-file'' ${CODEend} | image left-justified, text wraps on right | +| ${CODE} ${BANG}'''img-r''' ''url-to-image-file'' ${CODEend} | image right-justified, text wraps on the left | +| ${CODE} '''${BANG}'''img'''${OPT}'''-l'''${OR}'''-r'''${OPTend} ''url-to-image-file''${NUL}''' ${CODEend} | as a clickable link | + +) + +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +!define FixtureTABLE (${BANG}${BAR} ''fixture specification'' ${BAR} +${OPT}${BAR} ''optional table row'' ${BAR}${OPT} ''optional 2nd column'' ${BAR}${OPTend}'''...'''${OPTend} ${OPT}${BAR} ''optional table row'' ${BAR}${OPT} ''optional 2nd column'' ${BAR}${OPTend}'''...'''${OPTend} ${SPC}${SPC}${SPC}${SPC}${SPC}${SPC}${SPC}''':''' ) + +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +!define SearchForFIXTURE (G${NUL}raceFullName${NL}'''fit.'''G${NUL}raceFullName${NL}G${NUL}raceFullName'''Fixture'''${NL}'''fit.'''G${NUL}raceFullName'''Fixture''') +!define SearchForMETHOD (graceFullMethod${LPAREN}${RPAREN}${NL}'''get'''G${NUL}raceFullMethod${LPAREN}${RPAREN}${NL}'''set'''G${NUL}raceFullMethod${LPAREN}${RPAREN} ${LPAREN}if setter context${RPAREN}) +!define SearchForARG1 (methodName${LPAREN}''p1''${RPAREN}${NL}'''get'''M${NUL}ethodName(''p1''${RPAREN}${NL} '''set'''M${NUL}ethodName(''p1''${RPAREN}) +!define SearchForARG1TOO (methodNameToo${LPAREN}''p1''${RPAREN}${NL}'''get'''M${NUL}ethodNameToo${LPAREN}''p1''${RPAREN}${NL}'''set'''M${NUL}ethodNameToo${LPAREN}''p1''${RPAREN}) +!define SearchForARG2 (methodName${LPAREN}''p1'',''p2''${RPAREN}${NL}'''get'''M${NUL}ethodName${LPAREN}''p1'',''p2''${RPAREN}${NL}'''set'''M${NUL}ethodName${LPAREN}''p1'',''p2''${RPAREN}) +!define SearchForARG2TOO (methodNameToo${LPAREN}''p1'',''p2''${RPAREN}${NL}'''get'''M${NUL}ethodNameToo${LPAREN}''p1'',''p2''${RPAREN}${NL}'''set'''M${NUL}ethodNameToo${LPAREN}''p1'',''p2''${RPAREN}) +!define FixtureNAMING (|!note The cells below are on one line regardless of word-wrapping | +| '''table spec''' | '''Searches for:''' | +| ${CODE} ${BANG}${BAR} Grace Full Name ${BAR} ${CODEend} | ${SearchForFIXTURE} | +| ${CODE} ${BANG}${BAR} grace full method ${BAR} ${CODEend} | ${SearchForMETHOD} | +| ${CODE} ${BANG}${BAR} method name ${BAR}''p1''${BAR} ${CODEend} | ${SearchForARG1} | +| ${CODE} ${BANG}${BAR} method name ${BAR}''p1''${BAR} too ${BAR} ${CODEend} | ${SearchForARG1TOO} | +| ${CODE} ${BANG}${BAR} method name ${BAR}''p1''${BAR} also ${BAR}''p2''${BAR} ${CODEend} | ${SearchForARG2} | +| ${CODE} ${BANG}${BAR} method name ${BAR}''p1''${BAR}''' also ${BAR}''p2''${BAR} too ${BAR} ${CODEend}''' | ${SearchForARG2TOO} | + +) + +*! +#******************************************************************************************* + +#******************************************************************************************* + +#******************************************************************************************* + +!1 ${FitNESSE} Cheat Sheet +!anchor TopOfPAGE +!2 Sections + * '''[[ ${FitNESSE} Command Line ][#FitNesseCommandLINE]] ''' + * '''[[ Character Formatting ][#CharacterFORMATTING]] ''' + * '''[[ Line & Block Formatting ][#LineBlockFORMATTING]] ''' + * '''[[ Links & References ][#LinksAndREFERENCES]] ''' + * '''[[ Includes & Informational ][#IncludesINFORMATIONAL]] ''' + * '''[[ Variable Usage ][#VARIABLES]] ''' + * '''[[ Global Variables ][#GlobalVARIABLES]] ''' + * '''[[ Global Properties ][#GlobalPROPERTIES]] ''' + * '''[[ Testable Tables ][#TestTABLES]] ''' + * '''[[ Wiki Page Actions ][#FitNesseACTIONS]] ''' + +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +!2 Glossary +| ${PagePATH} | ${CODE} ${PageNAME}${DOT}${OPT}${PageNAME}${OPTend} ${CODEend} | +| ${AnyPagePATH} | ${CODE} ${OPT}${LT}${OR}${DOT}${OR}${GT}${OPTend}${PagePATH} ${CODEend} | +| Symbolic Link | A locally-defined alias to any accessible page.${NL}Symbolic links are created by clicking ${BUTTON}Properties${BUTTONend}${NL}and entering information in the bottom section${NL}titled "Symbolic Links". | + +#--------------------------------------------------------------------------------------------- + +!anchor FitNesseCommandLINE +---- +!2 !-FitNesse-! Command Line and Options ${TopOfPAGE} +| ${CODE} ${OPT}''path/to/java/''${OPTend}'''java''' ${FitNesseCHARACTERSET} ${FitNesseOptCLASSPATH} '''fitnesse.${FitNESSE}''' ${OPT}${FitNesseOptOMIT}${OPTend} ${OPT}${FitNesseOptPORT}${OPTend} ${OPT}${FitNesseOptDIR}${OPTend} ${OPT}${FitNesseOptROOT}${OPTend} ${OPT}${FitNesseOptEXPIRE}${OPTend} ${OPT}${FitNesseOptLOG}${OPTend} ${OPT}'''-a''' ''{''${FitNesseOptOneAUTH} ${OR} ${FitNesseOptFileAUTH}''}''${OPTend} ${OPT}''other arguments''${OPTend} ${CODEend} | +| ''' ''option'' ''' | ''' ''default'' ''' | ''' ''description'' ''' | +| ${CODE}'''-a''' ${FitNesseOptOneAUTH}${CODEend} | ${CODE} ''no auth'' ${CODEend} | Enforces access for one user | +| ${CODE}'''-a''' ${FitNesseOptFileAUTH}${CODEend} | ${CODE} ''no auth'' ${CODEend} | Enforces access for a file of users with encrypted passwords | +| ${CODE}${FitNesseOptDIR}${CODEend} | ${CODE} ${DOT} ${CODEend} | Path to the fitnesse ''wiki'' home where ${FitNESSE}Root or ''-r name'' resides | +| ${CODE}${FitNesseOptEXPIRE}${CODEend} | ${CODE} '''14''' ${CODEend} | Number of days to retain older versions (.zip files) | +| ${CODE}${FitNesseOptLOG}${CODEend} | ${CODE} ''off'' ${CODEend} | Where to put and what to call the run log | +| ${CODE}${FitNesseOptOMIT}${CODEend} | ${CODE} ''update'' ${CODEend} | Prevents (omits) updating ${FitNESSE}Root content| +| ${CODE}${FitNesseOptPORT}${CODEend} | ${CODE} '''80''' ${CODEend} | Port for ${FitNESSE} to listen on | +| ${CODE}${FitNesseOptROOT}${CODEend} | ${CODE} '''${FitNESSE}Root''' ${CODEend} | Name of root folder in the fitnesse ''wiki'' home or ''-d'' path | +| ${CODE}${FitNesseCHARACTERSET}${CODEend} | ${CODE} ''off'' ${CODEend} | Unicode characters support in Test History Page | + + +#--------------------------------------------------------------------------------------------- + +!anchor FitNesseACTIONS +!2 !-FitNesse-! Actions ${TopOfPAGE} +| '''Edit''' this page | ${CODE} ''url''${NUL}'''?edit''' ${CODEend} | +| '''Create''' a new page directly | ${CODE}''current-url''${NUL}'''.'''!-NewPageName-!${NUL}${CODEend}${NL}'''or''' ${NL} ${CODE}''current-url''${NUL}'''.'''!-NewPageName-!${NUL}'''?edit'''${CODEend} | +| '''Test''' this page | ${CODE} ''url''${NUL}'''?test''' ${CODEend} | +| '''Suite''' test this page | ${CODE} ''url''${NUL}'''?suite''' ${CODEend} | +| Set '''properties''' of this page | ${CODE} ''url''${NUL}'''?properties''' ${CODEend} | +| See '''versions''' of this page | ${CODE} ''url''${NUL}'''?versions''' ${CODEend} | +| '''Refactor''' this page | ${CODE} ''url''${NUL}'''?refactor''' ${CODEend} | +| '''Search''' pages from here | ${CODE} ''url''${NUL}'''?searchForm''' ${CODEend} | +| '''Where''' is this page referenced? | ${CODE} ''url''${NUL}'''?whereUsed''' ${CODEend} | +| '''Debug''' this test page | ${CODE} ''url''${NUL}'''?debug''' ${CODEend} | +| '''Suite''' test this page with a suite filter "passing" | ${CODE} ''url''${NUL}'''?responder=suite&suiteFilter=passing''' ${CODEend} | + +#--------------------------------------------------------------------------------------------- + +!anchor CharacterFORMATTING +!2 Character Formatting ${TopOfPAGE} +| Comment | ${CODE} '''!-#-!'''${TEXT} ${CODEend} | ''Can also be used to comment-out markup'' | +| Italics | ${CODE} '''!-''-!'''${TEXT}'''!-''-!''' ${CODEend} | | +| Bold | ${CODE} '''!-'''-!'''${TEXT}'''!-'''-!''' ${CODEend} | | +| Style | ${CODE} '''!-!style_(text)-!''' ${CODEend} | The style of ''text'' will be the CSS class '''' | +| Strike-through | ${CODE} '''!----!'''${TEXT}'''!----!''' ${CODEend} | | +| "As-is"/escaping | ${CODE} '''${BANG}-'''${TEXT}'''-${BANG}''' ${CODEend} | ''Can also be used to insert HTML tags directly'' | +| "As-is" | ${CODE} '''${BANG}<'''${TEXT}'''>${BANG}''' ${CODEend} | ''Will escape HTML tags so they display in plain text.'' | +| Alias Link | ${CODE} '''${TEXT}''' ${CODEend} | | + +#--------------------------------------------------------------------------------------------- + +!anchor LineBlockFORMATTING +!2 Line & Block Formatting ${TopOfPAGE} +| workflow break | ${CODE} '''!------!''' ${CODEend}...separates each "phase" | +| Horizontal Line | ${HorizontalLINES} | +| Note | ${CODE} ${BANG}'''note''' ${TEXT} ${CODEend} | +| Headings | ${CODE} ${HEADINGS} ${CODEend} | +| Centered | ${CODE} ${BANG}'''c''' ${TEXT} ${CODEend} | +| Formatted "as is" | ${CODE} '''!-{{{-!'''${TEXT}'''!-}}}-!''' ${CODEend} | note: causes extra line afterward | +| Collapsible | ${CollapSIBLE} | + +#--------------------------------------------------------------------------------------------- + +!anchor LinksAndREFERENCES +!2 Links & References ${TopOfPAGE} +| Page links | ${PageLINKS} | +| Cross-reference &${NL}Suite Include | ${CODE} ${BANG}'''see''' ${AnyPagePATH} ${CODEend} | +| Define "in-page" label | ${CODE} ${BANG}'''anchor''' ${LabelNAME} ${CODEend} | a.k.a. anchor | +| Jump to "in-page" label | ${JumpTO} | +| External Links | ${ExternalLINKS} | +!note Link texts containing !-WikiText-! may be escaped. E.g. ''!-[[-!'''${BANG}-'''!-FitNesse-!'''-${BANG}'''!-][http://fitnesse.org]]-!''. + +#--------------------------------------------------------------------------------------------- + +!anchor IncludesINFORMATIONAL +!2 Includes & Informational ${TopOfPAGE} +| Timestamp | ${CODE} ${BANG}'''lastmodified''' ${CODEend} | +| Timestamp | ${CODE} ${BANG}'''today''' ${CODEend} | +| Help text | ${CODE} ${BANG}'''help''' ${CODEend} | +| [[Table of Content][FitNesseWiki.MarkupLanguageReference.MarkupContents]]| ${TocInsert} | +| [[Include Page][WritingAcceptanceTests.AcceptanceTestPatterns.ParameterizedIncludes]] | ${IncludePAGE} | +| [[Picture Insert][FitNesseWiki.MarkupLanguageReference.MarkupPicture]] | ${PictureINSERT} | + +#--------------------------------------------------------------------------------------------- + +!anchor VARIABLES +!2 [[Variables][FitNesseWiki.MarkupLanguageReference.MarkupVariables]] ${TopOfPAGE} +| Variable Definition | ${CODE} ${BANG}'''define''' ''name'' ${LBRACE}''value''${RBRACE} ${NL}${BANG}'''define''' ''name'' '''('''${NUL}''value''${NUL}''')'''${NL}${BANG}'''define''' ''name'' '''['''${NUL}''value''${NUL}''']''' ${CODEend}${NL} | +| Variable Usage | ${CODE} '''$'''${LBRACE}''name''${RBRACE} ${CODEend} | +| [[Expression Evaluation][FitNesseWiki.MarkupLanguageReference.MarkupExpressions]] | ${CODE} '''!-${=-!'''${NUL}''expression''${NUL}'''!-=}-!''' ${CODEend} | ''expression'' may contain variables | + +#--------------------------------------------------------------------------------------------- + +!anchor GlobalVARIABLES +!2 Global Variables ${TopOfPAGE} +| ''' NAME ''' | ''' Java Default ''' | '''!-FitLibrary (Unix) Default-!''' | ''' .NET Default ''' | +| ${CODE} COMMAND_PATTERN ${CODEend} | !- java -cp %p %m -! | !- java -cp %p %m -! | !- %m %p -! | +| ${CODE} REMOTE_DEBUG_COMMAND${CODEend} | !- REMOTE DEBUG COMMAND, or java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -cp %p %m-! | !-java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -cp %p %m-! | !-java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -cp %p %m-! | +| ${CODE} PATH_SEPARATOR ${CODEend} | ${SPC} : ${SPC} ''!-(system-dependent)-!'' | ${SPC} : ${SPC} ''!-(system-dependent)-!'' | ${SPC} !-;-! ${SPC} | +| ${CODE} TEST_RUNNER ${CODEend} | !-fit.FitServer-! | !-fitlibrary.suite.FitLibraryServer-! | !-dotnet\FitServer.exe-! | +| ${CODE} REMOTE_DEBUG_RUNNER ${CODEend} | !-TEST_RUNNER -! | !-same as for java-! | !-dotnet\FitServer.exe-! | + +| ''' NAME ''' | ''' Default ''' | ''' Values ''' | ''' Notes ''' | +| ${CODE} TEST_SYSTEM ${CODEend} | !c fit | !c fit&bar;slim | '' Selects the test system to use for this, and descendant pages.'' | +| ${CODE} SLIM_PORT ${CODEend} ''(deprecated)''| !c 1 | !c integer | '' !-1= communicate via STDIN/STDOUT requires no network ports +0= find a free port automatically +else Defines the starting port number and rotates in a range defined by slim.pool.size (10).-!'' | +| ${CODE} SLIM_HOST ${CODEend} ''(deprecated)''| !c localhost | !c string | '' The name of the host on which !-SlimServer-! is running.'' | +| ${CODE} SLIM_VERSION ${CODEend} | !c nil | !c string | '' The minimum Slim Protocol Version required for this page. Used to turn off slim protocol error messages.'' | +| ${CODE} [[MANUALLY_START_TEST_RUNNER][.FitNesse.SuiteAcceptanceTests.SuiteSlimTests.TestSystemSlimSuite.ManualStartofSlimService]] ${CODEend} | !c false | !c true${BAR}false | '' When set to true then fitnesse will not create it's own slim runner, and will instead connect to an existing runner on port ${CODE} SLIM_PORT ${CODEend} on host ${CODE} SLIM_HOST ${CODEend}.'' | +| ${CODE} MANUALLY_START_TEST_RUNNER_ON_DEBUG ${CODEend} | !c false | !c true${BAR}false | '' Same as above but only when and a page is run in debug mode .'' | +| ${CODE} CLASSPATH_PROPERTY ${CODEend} | !c nil | !c ''an environment variable'' | '' If not nil, loads classpath (as gathered from !path) into the named environment variable. See [[Customizing Test Execution][WritingAcceptanceTests.CustomizingTestExecution]].'' | +| ${CODE} COLLAPSE_SETUP ${CODEend} | !c false | !c true${BAR}false | '' Collapses all !-SetUps-! '' | +| ${CODE} COLLAPSE_TEARDOWN ${CODEend} | !c false | !c true${BAR}false | '' Collapses all !-TearDowns-! '' | +| ${CODE} FILTER_TOC ${CODEend} | !c false | !c true${BAR}false | '' Append suite fiters to TOC '' | +| ${CODE} HELP_PREFIX_TOC ${CODEend} | !c :<''space''> | !c ''any string'' | '' Define prefix for help text suffix '' | +| ${CODE} HELP_TOC ${CODEend} | !c false | !c true${BAR}false | '' Append help text to TOC '' | +| ${CODE} MORE_SUFFIX_TOC ${CODEend} | !c <''space''>... | !c ''any string'' | '' Define sequence to show more TOC levels '' | +| ${CODE} PROPERTY_CHARACTERS ${CODEend} | !c !- *+@>- -! | !c ''any characters'' | '' Define property icons for TOC '' | +| ${CODE} PROPERTY_TOC ${CODEend} | !c false | !c true${BAR}false | '' Append property icons to TOC '' | +| ${CODE} REGRACE_LINK ${CODEend} | !c false | !c true${BAR}false | '' Makes links graceful '' | +| ${CODE} REGRACE_TOC ${CODEend} | !c false | !c true${BAR}false | '' Makes !contents list graceful '' | +| ${CODE} RSS_PREFIX ${CODEend} | !c | !c | '' Link prefix for [[RSS Feeds][AdministeringFitNesse.RestfulServices.RssFeed]] '' | +| ${CODE} INCLUDE_SCENARIO_LIBRARIES ${CODEend} | !c false* | !c true${BAR}false | ''Test pages should include [[!-ScenarioLibrary-!][WritingAcceptanceTests.SpecialPages]] pages''!- +-! * defaults to true if the SLiM test system is defined. | +| ${CODE} FORMAT_LOCALE ${CODEend} | !c nil | !c IETF language tag | '' IETF language tag for the locale used for formatting evaluated expressions '' | +| ${CODE} ''PAGE_NAME'' ${CODEend} | !c | !c Read Only | '' Name of current page'' | +| ${CODE} ''PAGE_PATH '' ${CODEend} | !c | !c Read Only | '' Fully qualified name of parent. '' | +| ${CODE} ''RUNNING_PAGE_NAME'' ${CODEend} | !c | !c Read Only | '' Name of current top level running page'' | +| ${CODE} ''RUNNING_PAGE_PATH '' ${CODEend} | !c | !c Read Only | '' Fully qualified name of the current tope level running page's parent. '' | +| ${CODE} ''FITNESSE_PORT'' ${CODEend} | !c | !c Read Only | '' Port number that fitnesse is using. '' | + +!note (See the [[''root'' page][""root""]] for overrides) +#--------------------------------------------------------------------------------------------- + +!anchor GlobalPROPERTIES +!2 Global Properties ${TopOfPAGE} +| ${CODE} path.separator ${CODEend} | ''!-(system-dependent)-!'' | + +!note (See the [[''root'' page][""root""]] for overrides) +#--------------------------------------------------------------------------------------------- + +!anchor TestTABLES +!2 Testable Tables ${TopOfPAGE} +| Classpath include | ${CODE} ${BANG}'''path''' ''java.path.spec'' ${CODEend} | +| "Insert Fixture Table"${NL}Edit List Include | ${CODE} ${BANG}'''fixture''' ''path.fixture'' ${CODEend} | +| Prevent Wikification | ${CODE} ${BANG}${BAR} ''"as is" or escaped content'' ${BAR} ${CODEend} | +| Smallest Table | ${CODE} ${BAR} ${TEXT} ${BAR} ${CODEend} | +| Fixture Table | ${CODE} ${FixtureTABLE} ${CODEend} | +| Graceful Naming | ${FixtureNAMING} | diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/QuickReferenceGuide/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/QuickReferenceGuide/properties.xml new file mode 100644 index 0000000..5e52f43 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/QuickReferenceGuide/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + +1237228032275 +-5542215261053372341 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/TwoMinuteExample/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/TwoMinuteExample/content.txt new file mode 100644 index 0000000..3532654 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/TwoMinuteExample/content.txt @@ -0,0 +1,99 @@ +!***< Hidden + +!define TEST_SYSTEM {slim} +*! +!1 An Example !-FitNesse-! Test +If you were testing the division function of a calculator application, you might like to see some examples working. You might want to see what you get back if you ask it to divide 10 by 2. (You might be hoping for a 5!) + +In !-FitNesse-!, tests are expressed as tables of '''input''' data and '''expected output''' data. Here is one way to specify a few division tests in !-FitNesse-!: + +|eg.Division | +|numerator|denominator|quotient?| +|10 |2 |5.0 | +|12.6 |3 |4.2 | +|22 |7 |~=3.14 | +|9 |3 |<5 | +|11 |2 |4<_<6 | +|100 |4 |33 | + +This style of !-FitNesse-! test table is called a [[Decision Table][ + + + +A brief example. + + + + + + + +1238092849129 +-8522914120834285308 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/BuildOperateCheck/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/BuildOperateCheck/content.txt new file mode 100644 index 0000000..2fab3f4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/BuildOperateCheck/content.txt @@ -0,0 +1,10 @@ +This pattern shows up repeatedly in FitNesse Acceptance Tests. You need to use several tables on a single page, in order to fully test a given requirement. These tables naturally fall into three categories: + + 1 '''Build''': One or more tables to ''Build'' the test data. These tables are typically based upon a [[!-ColumnFixture-!][ + + + + +1238101475545 +5143830989649989012 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/CommonIncludes/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/CommonIncludes/content.txt new file mode 100644 index 0000000..6f73cd9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/CommonIncludes/content.txt @@ -0,0 +1,11 @@ +It is very common to have a many tests that look alike. In most cases these test will have duplicate content perhaps to setup the environment for the test. This duplication can very very painful when the environment changes. The change to the enviroment will have to be made in all the tests that share the duplicated content. This can very tedious and time consuming work. Fortunately it can be avoided. + +Using the [[Include widget][ + + +true + +1130158434501 +5401049948558438943 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/ParameterizedIncludes/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/ParameterizedIncludes/content.txt new file mode 100644 index 0000000..cf642b7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/ParameterizedIncludes/content.txt @@ -0,0 +1,16 @@ +When using the CommonIncludes pattern you may come across duplicated content that varies with only one or two values. This can make using includes difficult but when combined with variables, includes become even more powerful. You can parameterize included pages by declaring variables in the test page and referencing them in the included page. + +First we'll include a parameterized include page without defining any variables. +!include SampleParameterizedPage + +Now we define the required variables. +!define NUMERATOR {100} +!define DENOMINATOR {10} +!define QUOTIENT {10} +!include SampleParameterizedPage + +We can redefine the variables and use the parameterized include again. +!define NUMERATOR {555} +!define DENOMINATOR {5} +!define QUOTIENT {111} +!include SampleParameterizedPage diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/ParameterizedIncludes/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/ParameterizedIncludes/properties.xml new file mode 100644 index 0000000..081e7f4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/ParameterizedIncludes/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleOperateForTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleOperateForTest/content.txt new file mode 100644 index 0000000..9ecb459 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleOperateForTest/content.txt @@ -0,0 +1,5 @@ +This is the Opertation step of our sample test. + +It is common among multiple tests so it is saved in a separate page that can be included by test pages. + +!|A table the performs an operation that needs checking| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleOperateForTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleOperateForTest/properties.xml new file mode 100644 index 0000000..67c0954 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleOperateForTest/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleParameterizedPage/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleParameterizedPage/content.txt new file mode 100644 index 0000000..3c11d2a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleParameterizedPage/content.txt @@ -0,0 +1,8 @@ +This page requires that 3 variables be defined before it is included. + * NUMERATOR + * DENOMINATOR + * QUOTIENT + +!|eg.Division| +|numerator|denominator|quotient?| +|${NUMERATOR}|${DENOMINATOR}|${QUOTIENT}| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleParameterizedPage/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleParameterizedPage/properties.xml new file mode 100644 index 0000000..7f8ea4e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleParameterizedPage/properties.xml @@ -0,0 +1,6 @@ + + + +true + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleSetupForTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleSetupForTest/content.txt new file mode 100644 index 0000000..c9a4e1a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleSetupForTest/content.txt @@ -0,0 +1,5 @@ +This is the Build step of our sample test. + +It is common among multiple tests so it is saved in a separate page that can be included by test pages. + +!|A table that sets up for a test| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleSetupForTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleSetupForTest/properties.xml new file mode 100644 index 0000000..67c0954 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/SampleSetupForTest/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/content.txt new file mode 100644 index 0000000..9e36478 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/content.txt @@ -0,0 +1,8 @@ +!1 !c Acceptance Test Patterns. +There seem to be patterns associated with writing acceptance tests with Fit and FitNesse. + +| >BuildOperateCheck | ''Three tables for each test.'' | +| >CommonIncludes | ''Avoid duplicate test content by creating pages that are included into tests.'' | +| >ParameterizedIncludes | ''Using variables and Includes together to achieve function-like behavior.'' | +| >StaticBeforeDynamic | ''First check the end results, then check the in-process results.'' | +| >OperateFunction | ''Column Fixtures often need a special function to perform an operation between input and output.'' | diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/properties.xml new file mode 100644 index 0000000..67c0954 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AcceptanceTestPatterns/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AttentionMessagesInTestResults/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AttentionMessagesInTestResults/content.txt new file mode 100644 index 0000000..4cbccc1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AttentionMessagesInTestResults/content.txt @@ -0,0 +1,20 @@ +You'll occasionally see a big ATTENTION message in your tests. This typically means that something went wrong with the test and either Fit or Fitnesse had to bail out. If you click on the link inside the message you'll be taken to a page that will show you everything we know about what went wrong, including any standard error output from any of your fixtures. + +The execution log information is stored alongside the test history. So you will not get it if you execute your tests with the ''?noHistory'' option enabled.  + +This page is ''always'' created whenever you run a test, not just when there are errors. So even if you don't get the big ATTENTION message, you can still go to the appropriate execution log page to see things like the command that was used to run your test, and the time it took to run the test, etc. + +You can access the execution log of previous runs by going to the Test- or Page history. There you can select the output of a specific run. This page will contain a link to the appropriate execution log information. Note that most information (such as the command used to start the test/suite) is only saved once as part of the execution log of the initiating page. + +An !-execution log-! page typically looks like this: + +| '''Date: ''' | !-6:49:19 PM (CST) on Thursday, February 26, 2004-! | +| '''Command: ''' | !-java -cp fitnesse.jar;classes fit.FitServer-! | +| '''Exit code: ''' | !-0-! | +| '''Time elapsed: ''' | !-0.28 seconds-! | + +---- +{{{ This is an error +}}} + +!2 diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AttentionMessagesInTestResults/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AttentionMessagesInTestResults/properties.xml new file mode 100644 index 0000000..081e7f4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/AttentionMessagesInTestResults/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/ClassPath/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/ClassPath/content.txt new file mode 100644 index 0000000..ada7842 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/ClassPath/content.txt @@ -0,0 +1,22 @@ +!1 The !-ClassPath-!: Telling FitNesse Where the FixtureCode Is + +For a given [[Sub Wiki][ + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/CustomizingTestExecution/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/CustomizingTestExecution/content.txt new file mode 100644 index 0000000..ffe9048 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/CustomizingTestExecution/content.txt @@ -0,0 +1,37 @@ +You may customize the way tests are executed to suit your needs. You can even change the language of execution! +The is done by defining any of a few special variables in the scope (see VariableScope) of the tests you wish to execute. +The special variables are: + + * TEST_SYSTEM + * COMMAND_PATTERN + * TEST_RUNNER + * PATH_SEPARATOR + * REMOTE_DEBUG_COMMAND + * REMOTE_DEBUG_RUNNER + * CLASSPATH_PROPERTY + +'''TEST_SYSTEM''' Defines the interface that FitNesse will use to execute tests. Right now there are two such interfaces: {fit | slim} +''default: '' '''''' which implies fit. + +'''COMMAND_PATTERN''' is the basis for every execution performed in FitNesse. It specifies the command that will be executed. +''default: '' '''java -cp %p %m''' +There are two special symbols used that will get replaced before execution. + * '''%p''' will be replaces with the calculated path/classpath. This is the accumulation of all the ''!path'' elements on all the ''ClassPath'' pages in the scope of the current page. + * '''%m''' stands for '''main''' or '''main class'''. For Java it is the name of the class that will be executed. + +'''TEST_RUNNER''' is the name of the class or executable that will be used when the ''Test'' button is clicked. +''default: '' '''!-fit.FitServer-!''' +If you're running tests in Java you probably don't want to change this. + +'''PATH_SEPARATOR''' is the charater that is used to separate all the path elements in the calculated path. +''default: '' '''system dependant.... either ; or :''' + +'''REMOTE_DEBUG_COMMAND''' is the command pattern used to execute tests in debug mode. See DebugingFixtureCode for more details. +''default:'' Same as command pattern, except if contains "java" then '''"java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -cp %p %m"''' is used instead +It has the same format as the standand '''COMMAND_PATTERN''' + +'''REMOTE_DEBUG_RUNNER''' is the test runner used to execute tests in debug mode. See DebugingFixtureCode for more details. +''default:'' Same as TEST_RUNNER, except substring "runner.exe" is replaced by '''"runnerw.exe"''' +It has the same format as the standand '''TEST_RUNNER''' + +'''CLASSPATH_PROPERTY''' specifies the name of the environment variable into which the classpath (gathered from !path statements) will be placed before running the test. This is most commonly used when the size of the classpath is too large for certain inept operating systems to deal with. Instead of specifying the %p argument of the COMMAND_PATTERN, you can instead !style_code[!-!define CLASSPATH_PROPERTY {CLASSPATH}-!]. This is most useful for Java. For other languages it may not have much meaning. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/CustomizingTestExecution/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/CustomizingTestExecution/properties.xml new file mode 100644 index 0000000..a965fd7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/CustomizingTestExecution/properties.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + 1224243062251 + -2035431799417459728 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/DebuggingFitNesseTables/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/DebuggingFitNesseTables/content.txt new file mode 100644 index 0000000..2e1ebef --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/DebuggingFitNesseTables/content.txt @@ -0,0 +1,21 @@ +So, you'd like to debug your fixtures? Remember that fixtures are run in a ''completely'' different process from FitNesse It's not easy to set a breakpoint in a fixture and then hope to trap there when the fixture is going to be run in a different process. But don't worry too much. If your fixture is written in java, then you can use !style_code(&debug), otherwose you can still use print statements. + +!4 &debug +When you hit the test button it runs the test by issuing the URL !style_code(!-http://myHost:myPort/MyPage?test-!). You can force the execution to take place in the same JVM that FitNesse is running in by modifying that url to !style_code(!-http://myHost:myPort/MyPage?test&debug-!). If you have connected your debugger to fitnesse, then you should be able to set breakpoints in your fixtures. Of course this will only work if the fixtures are written in Java. + +!4 Print Statements +Anything you print to standard out, or standard ''error'' will be placed in the execution log for your test run. This is true whether the test fails or succeeds. The execution log is created whenever you run a test. After a test or suite has been executed, a button "Execution Log" appears. Log information of previous runs is available through the Page History. + +Debugging your fixtures should be something you rarely need to do. After all, the code in your fixtures shouldn't be doing very much. At most it should be simply wiring and piping to get the data from your tables into your application and back. + +An execution log page looks like this: +----- +|'''Date: ''' |!-6:49:19 PM (CST) on Thursday, February 26, 2004-!| +|'''Command: ''' |!-java -cp fitnesse.jar;classes fit.FitServer-! | +|'''Exit code: ''' |!-0-! | +|'''Time elapsed: '''|!-0.28 seconds-! | +----'''Standard Error:''' +{{{ This is an error +}}} +----- +Notice that you can see the command that was used to run your test. This is very useful if you are concerned that your fixtures aren't running with the right classpaths. You can see the classpaths sent to the test in the ''-cp'' argument of the ''java'' command. \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/DebuggingFitNesseTables/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/DebuggingFitNesseTables/properties.xml new file mode 100644 index 0000000..0ba5eef --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/DebuggingFitNesseTables/properties.xml @@ -0,0 +1,8 @@ + + + + + +1238102099872 +-7325283609995888998 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/DebuggingFixtureCode/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/DebuggingFixtureCode/content.txt new file mode 100644 index 0000000..eb5ecc2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/DebuggingFixtureCode/content.txt @@ -0,0 +1,29 @@ +!2 Debugging with a local wiki site + +To debug fixture execution when wiki pages are accessible over a local file system, see RunningFromJunit. + +Debugging is also possible with the ''FitNesse'' language plugin for !-IntelliJ-! IDEA. + +!2 Debugging with a remote wiki site + +Fixture code of a remote FitNesse wiki site can be debugged using the remote debugger to connect to the slim executor or fit client. + +To set up debugging for your fixture code: + 1 If necessary (it should work out of the box for java and C# slim), set up the '''REMOTE_DEBUG_COMMAND''' and '''REMOTE_DEBUG_RUNNER''' in your wiki. Together these commands should start the server in debug mode and wait for the debugger to connect before the code is run. As these variales are only used when you start a test in debug mode it is a good idea to specify this define on root page of your wiki. + 2 When you want to debug a test, start by adding '''?responder=test&remote_debug=true''' to the url for the test. + 3 After starting the test in FitNesse, start a remote debugging process in your debugging tool which should connect to slim/fit server. Remember to make sure you are using the right port. (Port 8000 if you are using the default settings for java) + +The Tools menu contains a Remote Debug action that can be used to start a test run in debug mode. + +Alternatively, just drag the following link to the bookmark toolbar of your favourite browser: !-Debug FitNesse-! (since the link contains javascript, this may not work for all browsers). + +!2 Alternative way to debug when using Slim +For.NET it was found to be easier to debug starting the slim runner with the debugger attached and then getting fitnesse to connect to this started instance. + +To do it this way: +1. Make sure !define MANUALLY_START_TEST_RUNNER_ON_DEBUG=true is set on the page you want to debug running +2. Start the runner, on the default slim port. To find out what this is try ${SLIM_PORT} on your page. +3. Start fitnesse. It should automatically connect to the runner you started. + +One thing to note is that when fitnesse finishes the page it will automatically close down the runner. So you will need to start the slim runner each time you go to debug. + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/DebuggingFixtureCode/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/DebuggingFixtureCode/properties.xml new file mode 100644 index 0000000..a16a90f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/DebuggingFixtureCode/properties.xml @@ -0,0 +1,11 @@ + + +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ActionFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ActionFixture/content.txt new file mode 100644 index 0000000..6bf5a83 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ActionFixture/content.txt @@ -0,0 +1,47 @@ +!1 ActionFixture: Testing Sequences of Events + +Sometimes the software behavior you are testing is inherently sequential: a series of events occur in a prescribed order. The ActionFixture style of test table (and [[!-FixtureCode-!][ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ActionFixtureCode/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ActionFixtureCode/content.txt new file mode 100644 index 0000000..9621110 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ActionFixtureCode/content.txt @@ -0,0 +1,26 @@ +!1 The Fixture Code for Action Fixtures + +Here is our example test table from the ActionFixture page: + +|Action Fixture.| +|start|!-fitnesse.fixtures.CountFixture-!| +|check|counter|0| +|press|count| +|check|counter|1| +|press|count| +|check|counter|2| +|enter|counter|5| +|press|count| +|check|counter|6| + +And here is the code for the !-CountFixture-!:{{{public class CountFixture extends Fixture { + private int counter = 0; + + public void count() { + counter++; + } + + public int counter() { + return counter; + } +} }}} As you can see, the names of the buttons (''check'', ''press'', and ''enter'') and registers (''count'' and ''counter'') correspond directly to methods in the 'started' fixture. And the meter values (the numbers in the rightmost column) are returned by the ''counter()'' method. It's really as simple as that. \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ActionFixtureCode/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ActionFixtureCode/properties.xml new file mode 100644 index 0000000..320c97c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ActionFixtureCode/properties.xml @@ -0,0 +1,9 @@ + + + + + + +1238101225197 +-5298968066639391546 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixture/content.txt new file mode 100644 index 0000000..a4ff782 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixture/content.txt @@ -0,0 +1,81 @@ +!1 Using !-ColumnFixtures-! +This table style is probably the most generally useful in FitNesse. Many kinds of software features can be tested with ColumnFixture: any feature that can be expressed as rows of inputs and outputs. + +ColumnFixture has the advantages of being easy to design and easy to understand. Below, we show a few more examples of uses for ColumnFixture. For starters, let's look at our test table for testing the division function of a calculator application: + +!| eg.Division | +| numerator | denominator | quotient? | +| 10 | 2 | 5 | +| 12.6 | 3 | 4.2 | +| 100 | 4 | 33 | + +The top row of the table provides the name of the ColumnFixtureCode that Fit will use to process the table. The second row specifies the inputs and outputs of the fixture; the column headings ''numerator'' and ''denominator'' specify columns of input values, and the ''quotient?'' heading specifies a column of expected return values. So if we divide 10 by 2, we expect to get back 5. + +For a description of the fixture code for the Division example, see ColumnFixtureCode. + +!2 A Slightly More Complex Example: A Trivia Game +Let's imagine that we are building a trivia game. The overall design of our trivia game is straightforward: players take turns rolling a single die, and move around a circular board. When they land on a square, they are asked a trivia question of some category. There are requirements for answering questions incorrectly, for winning, and so on. + +For now let's imagine that we are addressing a specific first requirement or user story (call it what you like): + +!3 "You can add players to the game, and you can ask the game how many players are playing." +Sounds pretty straightforward. Let's first set up a [[!-ClassPath-!][ + + + + + +1225604239004 +-8927698339001903465 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixtureCode/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixtureCode/content.txt new file mode 100644 index 0000000..3b02754 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixtureCode/content.txt @@ -0,0 +1,14 @@ +{{{ +package eg; +import fit.ColumnFixture; + +public class Division extends ColumnFixture { + public double numerator; + public double denominator; + public double quotient() {return numerator/denominator;} +} +}}} + +Input variables must be public. + +If the fixture declares the method ''public void execute()'' it will be called after all fields have been loaded, but before any output methods have been called. \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixtureCode/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixtureCode/properties.xml new file mode 100644 index 0000000..2ccc992 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixtureCode/properties.xml @@ -0,0 +1,10 @@ + + + + + + + +1225604433616 +5487233518994786467 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixtureDesign/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixtureDesign/content.txt new file mode 100644 index 0000000..54e9f4e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixtureDesign/content.txt @@ -0,0 +1,43 @@ +!3 Designing Tests with ColumnFixture +Think of each row of a ColumnFixture as one or more function calls. The values of the named variables are set, and then the functions are called. + +For example, lets say you were writing an inventory system, and you wanted to test its ability to keep track of stocked items. You might write tables like this: + +|!-inventory.AddStockFixture-!| +|partNumber|quantity|valid?| +|324|28|true| +|586|14|true| + +This test adds two stock items. The valid() function calls the parts of the system that cause a stock item to be added. The code for the !-AddStockFixture-! might look like this:{{{ +package inventory; +import fit.ColumnFixture; +public class AddStockFixture extends ColumnFixture { + public int partNumber; + public int quantity; + public boolean valid() { + try { + StockItem item = new StockItem(partNumber); + Inventory.addStockItem(item,quantity); + return true; + } catch (Exception e) { + return false; + } + } +} +}}}Next, we might write a table that simulates some purchases that reduce the stock of an item. + +|!-inventory.PurchaseItemFixture-!| +|partNumber|quantity|valid?| +|324|3|true| +|586|2|true| + +It should be clear how this fixture would be written. + +Finally we'd write a table that checked to make sure that the inventory had been properly updated. + +|!-inventory.CheckInventoryFixture-!| +|partNumber|quantity()| +|324|25| +|586|12| + +See how easy this is? diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixtureDesign/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixtureDesign/properties.xml new file mode 100644 index 0000000..67c0954 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ColumnFixtureDesign/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/CommentTables/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/CommentTables/content.txt new file mode 100644 index 0000000..0a0c235 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/CommentTables/content.txt @@ -0,0 +1,12 @@ +!1 Using Comment Tables +Sometimes you just want to explain something using a table. You don't want it to be a test table. But FitNesse presumes all tables are test tables. You need a CommentTable. + +You can make comment tables using the ''Comment'' table notation. It's simple. Simply put the word ''Comment'' all alone in the first row of the table, like so: + +|Comment| +|This table is just a comment| +|and will not participate| +|in the tests on this page.| + +If you click the Test button on a page containing such comment tables, FitNesse and the [[!-FitFramework-!][ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ComparisonExpressionsInFixtures/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ComparisonExpressionsInFixtures/content.txt new file mode 100644 index 0000000..39e0e14 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ComparisonExpressionsInFixtures/content.txt @@ -0,0 +1,17 @@ +!1 Comparison Expressions in Table Cells +!note specific to certain FIT implementations. + +Comparison expressions can also be used in numeric cells that represent expected outputs. In these expression the underscore character represents the return value of the method. You can use standard inequalities. + * For example: + * '''_ < 32''' or + * '''_ >= 99'''. + * You can also use a range such as: + * '''38 <= _ <55'''. + * For simple expressions the underscore can be omitted, thus: + * '''<99''' is legal. + +There are two special functions that you can override when you write a !-ColumnFixture-! + * ''reset()'' will be called at the beginning of each row. + * ''execute()'' will be called just prior to processing the first ''()'' or ''?'' cell in each row, or after the last cell in the row has been processed, whichever comes first. + +You can use these two functions to treat each row as a transaction. ''reset()'' can clear all the variables and get ready for the next transaction. ''execute()'' can do the transaction processing. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ComparisonExpressionsInFixtures/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ComparisonExpressionsInFixtures/properties.xml new file mode 100644 index 0000000..320f16c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ComparisonExpressionsInFixtures/properties.xml @@ -0,0 +1,8 @@ + + + + + + 1238101623822 + 5418038042288268028 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DataTypesInFixtures/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DataTypesInFixtures/content.txt new file mode 100644 index 0000000..5b2d763 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DataTypesInFixtures/content.txt @@ -0,0 +1,21 @@ +You can use all the standard Java data types in RowFixture and ColumnFixture. These types are automatically translated in and out of cell contents for you. They include: + + * String + * A trimmed string. You can use the keyword ''null'' or ''blank'' to mean a true java null, or an empty string respectively + * byte or Byte + * short or Short + * int or Integer + * long or Long + * float or Float + * double or Double + * char or Character + * boolean or Boolean + * Will interpret ''true'', ''yes'', ''y'', ''+'', ''1'' to be true. + * All else will be false. + * Array + * Any comma separated list of items will be converted into an array. + * Click [[here][.FitNesse.SuiteAcceptanceTests.SuiteFixtureTests.SuiteColumnFixtureSpec.TestArraysInColumnFixture]] to see the acceptance test for this. + +!3 Managing your own types with Fit. +Any user defined type that implements toString and parse will be managed correctly by RowFixture and ColumnFixture. The signatures of these methods are:{{{String toString(); +static Object parse(String s);}}} \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DataTypesInFixtures/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DataTypesInFixtures/properties.xml new file mode 100644 index 0000000..67c0954 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DataTypesInFixtures/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DesigningWithActionFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DesigningWithActionFixture/content.txt new file mode 100644 index 0000000..36d7d8c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DesigningWithActionFixture/content.txt @@ -0,0 +1,2 @@ +Action fixtures give you very simple scripting ability. Any test that requires a simple set of interactions could be based on an Action Fixture. For example, you ought to be able to completely test the software that controls a simple dialog box by using the appropriate 'enter', 'press', and 'check' operations. + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DesigningWithActionFixture/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DesigningWithActionFixture/properties.xml new file mode 100644 index 0000000..3764e1f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DesigningWithActionFixture/properties.xml @@ -0,0 +1,6 @@ + + + + true + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DesigningWithRowFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DesigningWithRowFixture/content.txt new file mode 100644 index 0000000..a83801e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DesigningWithRowFixture/content.txt @@ -0,0 +1,4 @@ +The RowFixture implementations that you have seen here have been simplistic, but educational. In each case the fixture just built up an array of little objects. In most cases you will build that array up by inspecting your real application data. + +However, think about this. If you have these tests written up front, then you will know what kind of objects they are going to need. You might be able to create applications that have these objects in them. Then the fixtures would simply return those objects without having to build them. + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DesigningWithRowFixture/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DesigningWithRowFixture/properties.xml new file mode 100644 index 0000000..67c0954 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/DesigningWithRowFixture/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ExceptionsInFitTables/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ExceptionsInFitTables/content.txt new file mode 100644 index 0000000..15fc5c4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ExceptionsInFitTables/content.txt @@ -0,0 +1,28 @@ +If something goes wrong when you push the ''test'' button, the most likely cause is that you haven't specified the classpath. Edit the test page and add a !path directive for every classpath that you want included. See BuildingClassPaths for more information. + +Another common problem is a mispelling of the test fixture, or one of the column names. The symptom is an exception appearing in the table cell that contains the mispelling. + +Hit the ''Test'' button to see what these errors look like. + +!|eg.thisTestFixtureDoesNotExist| +|just some data| + +!|eg.Division| +|dividend|divisor|quotient()| +|5|1|5| + +Another odd problem can occurr if the name of the fixture is a WikiWord. If the corresponding wiki page does not exist, then a ? is appended to it. Fit sees this ? and thinks it's part of the classname. Hit the ''Test'' button and then look at the table below. You should see a ? in the table at the end of the fixture name. You should also see that ? in the exception report that follows it. Look closely. + +!|somePackage.ClassThatLooksLikeWikiWordButIsntOne| +|a|b|c| + +If you have a problem like this, then what you need to do is surround the name of the fixture in !-!- -! and !- -!-! (see MarkupLiteralText). +{{{|! -somePackage.ClassThatLooksLikeWikiWordButIsntOne- !| +|a|b|c|}}} +Or you can also use the literal tables like this: +{{{!|somePackage.ClassThatLooksLikeWikiWordButIsntOne| +|a|b|c|}}} +'''Tip for viewing exceptions in small font''' +If you have a scroll-wheel mouse, hold the ctrl key and scroll the wheel. It increases/decreases the font size quickly in most browsers. + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ExceptionsInFitTables/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ExceptionsInFitTables/properties.xml new file mode 100644 index 0000000..32fbe71 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ExceptionsInFitTables/properties.xml @@ -0,0 +1,8 @@ + + + + true + + 1238103061084 + 5671685757323426249 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitProtocol/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitProtocol/content.txt new file mode 100644 index 0000000..a028d81 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitProtocol/content.txt @@ -0,0 +1,16 @@ + * ''INTEGER'' : A integer value in the form of a 10 byte string + * !-0000000000 = 0-! + * !-0000000005 = 5-! + * !-0000000123 = 123-! + * ''READ'' : Reading a value involves two step. + 1 read an ''INTEGER'' value, n + 2 read n bytes. + * ''WRITE'' : Writing a value involves two steps + 1 count the bytes in value and write the size as an ''INTEGER'' + 2 write the value as bytes + * ''WRITE COUNTS'' : Write the counts as 4 ''INTEGER''s + 1 right + 2 wrong + 3 ignores + 4 exceptions + * ''STATUS'' : Length of Error Message. If it is zero, the connection has been established. If not, it is followed by the Error Message. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitProtocol/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitProtocol/properties.xml new file mode 100644 index 0000000..67c0954 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitProtocol/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitServer/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitServer/content.txt new file mode 100644 index 0000000..168c9b5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitServer/content.txt @@ -0,0 +1,4 @@ +A program that is required for each implementation of FIT that couples FIT to FitNesse. + +FitServer is executed by FitNesse and will communicate through a socket with FitNesse. The protocol used is described in FitServerProtocol. + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitServer/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitServer/properties.xml new file mode 100644 index 0000000..67c0954 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitServer/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitServerProtocol/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitServerProtocol/content.txt new file mode 100644 index 0000000..1be05c0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitServerProtocol/content.txt @@ -0,0 +1,31 @@ +!c !3 A description of the FitServer component that is required for each FIT. +!c !3 This is the protocol of communication between FIT and FitNesse. +'''Invocation:''' +FitServer is invoked by a simple console command. +''!-java fit.FitServer-!'' + +'''Command Line Arguments:''' +Java usage: !-java fit.FitServer [-v]-! ''host port socketTicket'' + +'''Execution:''' + * '''Connecting''' + 1 Use the ''socketTicket'' to build an HTTP request of the form: + * !-GET /?responder=socketCatcher&ticket=-!''socketTicket'' !-HTTP/1.1\r\n\r\n-! + 1 open socket connection to the given ''host'' and ''port''. + 2 write the http request over the socket (do not precede with size) + 5 receive ''STATUS'' as ''INTEGER''. + * '''Transactions''' - loops until a 0 ''INTEGER'' is read as the size of a document. + 1 ''READ'' document from socket + 2 process document and ''WRITE'' processed document to socket. + * the processes document may be written in 1 to many chunks. + 3 write 0 to socket an an ''INTEGER''. + 4 ''WRITE COUNTS'' for document to socket + * '''Closing''' - invoked by reading a document size of 0. + 1 close the socket. + 2 exit execution with a value of (wrongs + exceptions) +!include FitProtocol + + +'''Errors and Exceptions:''' + - ''Connection Error'': If the ''STATUS'' recieved at connection is not zero, then somehitng has gone wrong. The value of ''STATUS'' is the length of the error message the FitNesse will send. Before exiting FitServer should read the error message and print it to standard error. + - ''Transaction Error'': If an exception is thrown during the processing of transactions then the exception should be wrapped in an HTML table and written back over the socket as though it were the test results. An exception thrown at any other point is considered fatal and may invoke abnormal termination. \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitServerProtocol/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitServerProtocol/properties.xml new file mode 100644 index 0000000..3764e1f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/FitServerProtocol/properties.xml @@ -0,0 +1,6 @@ + + + + true + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/KeywordsInTestTables/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/KeywordsInTestTables/content.txt new file mode 100644 index 0000000..084db9b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/KeywordsInTestTables/content.txt @@ -0,0 +1,7 @@ +There are three keywords that can appear in a test table. + +|null|''is replaced with a true null when used in a string column''| +|blank|''is replaced with an empty string when used in a string column''| +|error|''Turns the cell red if there were no errors. Turns the cell green if there was an exception.''| + +Click [[here][.FitNesse.SuiteAcceptanceTests.SuiteFixtureTests.SuiteGeneralFixtureSpec.TestBlankAndNullCells]] to see the acceptance tests for null and blank. \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/KeywordsInTestTables/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/KeywordsInTestTables/properties.xml new file mode 100644 index 0000000..67c0954 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/KeywordsInTestTables/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ParametersInFixtures/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ParametersInFixtures/content.txt new file mode 100644 index 0000000..8828556 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ParametersInFixtures/content.txt @@ -0,0 +1,60 @@ +!3 You are allowed to pass arguments into any fixture. + +Arguments are in cells that are to the right of the cell with the fixture name. The protected field ''args'' in Fixture holds a String array with the arguments. + +Below you can see a simple RowFixture that takes a single integer argument and produces the prime factors of that argument. + +|!-fitnesse.fixtures.PrimeFactorsFixture-!|6| +|factor| +|2| +|3| + +The code for this fixture is shown below. Note that the ''query'' method uses the ''args'' field. +(Note the "6" that follows the fixture name above.) You can put as many arguments there as you like. +{{{ +public class PrimeFactorsFixture extends RowFixture +{ + public static class Factor + { + public Factor(int factor) + { + this.factor = factor; + } + + public int factor; + } + + public Object[] query() + { + int n = Integer.parseInt(args[0]); + ArrayList factors = new ArrayList(); + for(int f = 2; n > 1; f++) + for(; n % f == 0; n /= f) + factors.add(new Factor(f)); + return (Factor[]) factors.toArray(new Factor[0]); + } + + public Class getTargetClass() // get expected type of row + { + return Factor.class; + } +} +}}} +Because this is a RowFixture, the order of the rows is unimportant. As shown below the rows will be matched and found regardless of their order. +|!-fitnesse.fixtures.PrimeFactorsFixture-!|1000| +|factor| +|2| +|5| +|2| +|5| +|5| +|2| + +And of course any cells that are missing, or extra will be marked in red. +|!-fitnesse.fixtures.PrimeFactorsFixture-!|63| +|factor| +|7| +|3| +|5| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ParametersInFixtures/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ParametersInFixtures/properties.xml new file mode 100644 index 0000000..a0c7922 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ParametersInFixtures/properties.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ParametricRowFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ParametricRowFixture/content.txt new file mode 100644 index 0000000..102c515 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ParametricRowFixture/content.txt @@ -0,0 +1,58 @@ +!3 This fixture is just like a RowFixture except that it allows you to pass arguments into the fixture. + +Below you can see a simple ParametricRowFixture that takes a single integer argument and produces the prime factors of that argument. + +|!-fitnesse.fixtures.PrimeFactorsFixture-!|6| +|factor| +|2| +|3| + +The code for this fixture is shown below. Note that the ''query'' method takes a ''String args[]'' argument. The arguments to the fixture are passed in through this array. The arguments are all the table cells that follow the fixture name. (Note the "6" that follows the fixture name above.) You can put as many arguments there as you like. +{{{ +public class PrimeFactorsFixture extends ParametricRowFixture +{ + public static class Factor + { + public Factor(int factor) + { + this.factor = factor; + } + + public int factor; + } + + public Object[] query(String[] args) + { + int n = Integer.parseInt(args[0]); + ArrayList factors = new ArrayList(); + for(int f = 2; n > 1; f++) + for(; n % f == 0; n /= f) + factors.add(new Factor(f)); + return (Factor[]) factors.toArray(new Factor[0]); + } + + public Class getTargetClass() // get expected type of row + { + return Factor.class; + } +} + +}}} +As in RowFixture, the order of the rows is unimportant. As shown below the rows will be matched and found regardless of their order. +|!-fitnesse.fixtures.PrimeFactorsFixture-!|1000| +|factor| +|2| +|5| +|2| +|5| +|5| +|2| + +As in RowFixture, and as shown below, any cells that are missing, or extra will be marked in red. +|!-fitnesse.fixtures.PrimeFactorsFixture-!|63| +|factor| +|7| +|3| +|5| + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ParametricRowFixture/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ParametricRowFixture/properties.xml new file mode 100644 index 0000000..c294a8b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/ParametricRowFixture/properties.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowEntryFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowEntryFixture/content.txt new file mode 100644 index 0000000..f6c4ce5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowEntryFixture/content.txt @@ -0,0 +1,37 @@ +!3 A Fixture for entering rows of data. + +Sometimes, as in the [[!-BuildOperateCheck-!][ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixture/content.txt new file mode 100644 index 0000000..9a6fcb7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixture/content.txt @@ -0,0 +1,125 @@ +!1 Checking Query Results Using !-RowFixture-! +This style of test table is best for checking the results of queries. For the sake of discussion, let's call each of the items that you get back from a query a '''record'''. A RowFixture lets you test that you get back '''exactly the set of records''' from a query that you expect to get. + +Here is a simplistic example. Let's say that we have asked our application for the first five prime numbers. We want to make sure we got them all. + +|!-fitnesse.fixtures.PrimeNumberRowFixture-!| +|prime| +|3| +|2| +|5| +|7| +|11| + +This test table style does not read the way that a ColumnFixture style test table does. In this case, each cell in the ''prime'' column represents a '''key''' that identifies one of the records we expect to get back (in this case, a prime number). And '''the entire set of rows of data''' represent the output we expect to get back: no more and no less than that '''exact set of records''' (though they need not be in that exact order). + +Hit the test button to run this test. OK, we got them all. For an explanation of the fixture code for this RowFixture example, see RowFixtureCode. + +!2 Missing Records +The following table shows what happens when you ask for a record that doesn't exist. ''(Note the extra 12.'') + +|!-fitnesse.fixtures.PrimeNumberRowFixture-!| +|prime| +|2| +|3| +|5| +|7| +|11| +|12| + +!2 Surplus Records +And this table shows what happens when you don't ask for a record that ''is'' in the query results. ''(Note the 11 is missing.)'' + +|!-fitnesse.fixtures.PrimeNumberRowFixture-!| +|prime| +|2| +|3| +|5| +|7| + +!2 Testing Fields in Returned Records +Often you want to see that you got a specific set of records back, '''and''' you want to '''test certain fields in the returned records'''. For this you use the same question-mark syntax we saw used for output columns in ColumnFixture style tables. + +For example, lets say that we have a database of employee records. We want to test that the employees were paid correctly. The ''pay?'' column in the table below specifies the exact amount we expect to get back for the pay field of each returned employee record: + +|!-fitnesse.fixtures.EmployeePayRecordsRowFixture-!| +|id|pay?| +|1|1000| +|2|2000| + +!3 Incorrect Output +Here's what it would look like if the pay was not correct for the employee whose id is 2. It looks just as it does for incorrect output values in a ColumnFixture table cell: + +|!-fitnesse.fixtures.EmployeePayRecordsRowFixture-!| +|id|pay?| +|1|1000| +|2|3000| + +!3 Missing or Extra Records +And regardless whether you check aspects of queried records, FitNesse shows you whether any are missing or extra: + +|!-fitnesse.fixtures.EmployeePayRecordsRowFixture-!| +|id|pay()| +|1|1000| +|5|5000| + +To see the fixture code for these tables, see RowFixtureCode. + +!2 Querying Using Multiple "Keys" +Sometimes we need more than one piece of data to uniquely identify a record. + +Suppose we have records for the last three months' worth of paychecks. Each paycheck is uniquely identified by the ''employeeId'' and the ''date''. We want to make sure that the checks were generated properly. We use a RowFixture table to ask for a set of checks identified by both ''employeeId'' '''and''' ''date'': + +|!-fitnesse.fixtures.PayCheckRecordFixture-!| +|date|employeeId|name|pay()| +|3/1/03|1||1000| +|3/1/03|2||2002| +|4/1/03|1||1015| +|4/1/03|2||2003| + +Notice, once again, that the order of the table rows doesn't matter. For example, this table also works fine for that same query: + +|!-fitnesse.fixtures.PayCheckRecordFixture-!| +|date|employeeId|name|pay()| +|4/1/03|1||1015| +|3/1/03|1||1000| +|4/1/03|2||2003| +|3/1/03|2||2002| + +!3 Blank Fields +Notice the ''name'' field. We provided the field name, knowing that it was part of each record, but we provided no expected values in that column. As a result, FitNesse did not make this field part of the key for finding records, but merely filled in the values found for that field in each record, so we could see them. Here's what would have happened if we filled in the ''name'' column correctly for some cells, and incorrectly for another. + +|!-fitnesse.fixtures.PayCheckRecordFixture-!| +|date|employeeId|name|pay()| +|3/1/03|1|Bob|1000| +|4/1/03|1|Bob|1015| +|3/1/03|2|Bill|2002| +|4/1/03|2|Biff|2003| + +And here's what would happen if a row were missing or surplus. + +|!-fitnesse.fixtures.PayCheckRecordFixture-!| +|date|employeeId|name|pay()| +|3/1/03|1||1000| +|4/1/03|1||1015| +|3/1/03|2||2002| +|4/1/03|3||2003| + +!2 Summary + * RowFixture tables are designed for checking that you get back exactly the set of records you want from a query. + * FitNesse will cause the test to fail if the query had any '''missing''' or '''surplus''' records. + * You can also test fields in the returned records. + * If you provide a field name column, but provide no expected values for it, then FitNesse will fill in the returned values so you can see them. + +!2 Learning More +To learn about the fixture code for the above examples, see RowFixtureCode. +Also check out the other TestTableStyles. + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixture/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixture/properties.xml new file mode 100644 index 0000000..505846e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixture/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + 1221210977814 + -6830312487753414061 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureCode/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureCode/content.txt new file mode 100644 index 0000000..2016ac2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureCode/content.txt @@ -0,0 +1,93 @@ +!1 How RowFixture Fixture Code Works + +Here is our simplistic prime number test table again: + +|!-fitnesse.fixtures.PrimeNumberRowFixture-!| +|prime| +|2| +|3| +|5| +|7| +|11| + +Hit the test button to run this test. OK, we got them all. How does the table tell the code what to expect? + +Each data column specifies a query '''key'''. Above, ''prime'' is our only key. We just want to see whether our set of primes contains each of these numbers. + +Now here is the code for the !-PrimeNumberRowFixture-!:{{{package fitnesse.fixtures; + +import fit.RowFixture; + +public class PrimeNumberRowFixture extends RowFixture { + public Object[] query() throws Exception { + PrimeData[] array = new PrimeData[5]; + array[0] = new PrimeData(11); + array[1] = new PrimeData(5); + array[2] = new PrimeData(3); + array[3] = new PrimeData(7); + array[4] = new PrimeData(2); + return array; + } + + public Class getTargetClass() { + return PrimeData.class; + } +} }}} All we are doing is assembling and returning an array of !-PrimeData-! objects: these are our ''records''. We also use the special ''getTargetClass()'' method to specify to Fit the type of the '''record''' objects we need it to inspect for us. In this case, ''!-PrimeData.class-!''. + +Notice that the '''key''' column name (''prime'') in the table corresponds to the public member variable ''prime'' in !-PrimeData-!. Fit inspects each of the !-PrimeData-! objects in the returned array, comparing the table cell values in the ''prime'' column with the contents of the ''prime'' variable in !-PrimeData-!. Here is the code for !-PrimeData-!: {{{package fitnesse.fixtures; + +public class PrimeData { + public int prime; + public PrimeData(int prime) { + this.prime = prime; + } +} }}} Notice also that the order of the records in our query array is not the same as the order of key values in the table. RowFixture does not care about the order of the records returned by a query, as long as they are all there, and as long as there are no extras. + +!2 Employee Pay Records Example: Testing Fields in Returned Records +Here is our sample table (from the RowFixture page) that checks that a company's employees were paid correctly: + +|!-fitnesse.fixtures.EmployeePayRecordsRowFixture-!| +|id|pay()| +|1|1000| +|2|2000| + +And here is the corresponding fixture code:{{{package fitnesse.fixtures; + +import fit.RowFixture; + +public class EmployeePayRecordsRowFixture extends RowFixture { + public Object[] query() throws Exception { + EmployeePayRecord[] records = new EmployeePayRecord[2]; + records[0] = new EmployeePayRecord(1, 1000); + records[1] = new EmployeePayRecord(2,2000); + return records; + } + public Class getTargetClass() { + return EmployeePayRecord.class; + } +} }}} Again, we are merely assembling an array of records; in this case, employee payroll records. We also identify the class of the '''record''' type Fit must inspect: ''!-EmployeePayRecord.class-!''. Now here is !-EmployeePayRecord-!: {{{package fitnesse.fixtures; + +public class EmployeePayRecord { + public int id; + private double salary; + public EmployeePayRecord(int id, double salary) { + this.id = id; + this.salary = salary; + } + public double pay() { + return salary; + } +} }}} To identify each row in the table, Fit finds the corresponding !style_code(!-EmployeePayRecord-!) by matching the ''id'' value in the table with the contents of the ''id'' variable, and matching the ''salary'' value in the table with the contents of the ''salary'' variable. For each found record, Fit then checks the value in the ''pay?'' column against the amount returned by the ''pay()'' method. + +!3 Wait a Minute. We're Just Assembling The Query Results in the Fixture! +Yeah, you're right. We're cheating, in the interest of clarity and simplicity. These examples show the mechanics of RowFixtureCode, but not a realistic use. It will rarely make sense to be assembling the array you need within the fixture code, since that does not demonstrate that your production code correctly provides the query results you need. + +When you write application code in order to get tests like the above to pass, you will likely want to have an array of the right objects already handy, so that something like !-EmployeePayRecordsRowFixture-! can just grab it, instead of having to assemble it. Alternatively, you might have production code ready to grab the array of query results from a database. In either case, the fixture code would just ask the production code to return the array of records it needs. + +!2 Learning More +To learn more about the RowFixture style of test table, see RowFixture. +To learn more about how FitNesse fixture code works in general, check out [[!-FixtureCode-!][ + + + + + +1238172708803 +7873739675907270557 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureFunctions/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureFunctions/content.txt new file mode 100644 index 0000000..1368a9e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureFunctions/content.txt @@ -0,0 +1,51 @@ +RowFixture also supports functions, so you can check on the objects that you query. For example, lets say that we have a database of employee objects. We want to test that the employees were paid correctly. + +|!-fitnesse.fixtures.EmployeePayRecordsRowFixture-!| +|id|pay()| +|1|1000| +|2|2000| + +As you can see, we query the employees by ''id'', and then check to see that their pay was correct. Here's what it would look like if their pay was not correct. + +|!-fitnesse.fixtures.EmployeePayRecordsRowFixture-!| +|id|pay()| +|1|1000| +|2|3000| + +And here is what it would look like if there were missing or extra employees + +|!-fitnesse.fixtures.EmployeePayRecordsRowFixture-!| +|id|pay()| +|1|1000| +|5|5000| + +Here is the code for the fixtures:{{{package fitnesse.fixtures; + +import fit.RowFixture; + +public class EmployeePayRecordsRowFixture extends RowFixture { + public Object[] query() throws Exception { + EmployeePayRecord[] records = new EmployeePayRecord[2]; + records[0] = new EmployeePayRecord(1, 1000); + records[1] = new EmployeePayRecord(2,2000); + return records; + } + public Class getTargetClass() { + return EmployeePayRecord.class; + } +} }}}----{{{package fitnesse.fixtures; + +public class EmployeePayRecord { + public int id; + private double salary; + public EmployeePayRecord(int id, double salary) { + this.id = id; + this.salary = salary; + } + public double pay() { + return salary; + } +} }}} + +!img http://files/images/runArrow.gif For more about RowFixture see RowFixtureMultipleKeys + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureFunctions/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureFunctions/properties.xml new file mode 100644 index 0000000..67c0954 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureFunctions/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureMultipleKeys/VirtualWikiNetworkError/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureMultipleKeys/VirtualWikiNetworkError/content.txt new file mode 100644 index 0000000..576a80b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureMultipleKeys/VirtualWikiNetworkError/content.txt @@ -0,0 +1,31 @@ +{{{java.net.MalformedURLException: no protocol: null?responder=proxy&type=bones + java.net.URL.(URL.java:567) + java.net.URL.(URL.java:464) + java.net.URL.(URL.java:413) + fitnesse.wiki.ProxyPage.retrievePage(ProxyPage.java:51) + fitnesse.wiki.VirtualCouplingExtension.loadVirtualChildren(VirtualCouplingExtension.java:45) + fitnesse.wiki.VirtualCouplingExtension.detectAndLoadVirtualChildren(VirtualCouplingExtension.java:40) + fitnesse.wiki.VirtualCouplingExtension.getVirtualCoupling(VirtualCouplingExtension.java:33) + fitnesse.wikitext.widgets.TOCWidget.buildListOfChildPages(TOCWidget.java:269) + fitnesse.wikitext.widgets.TOCWidget.buildList(TOCWidget.java:164) + fitnesse.wikitext.widgets.TOCWidget.buildContentsDiv(TOCWidget.java:150) + fitnesse.wikitext.widgets.TOCWidget.buildListItem(TOCWidget.java:190) + fitnesse.wikitext.widgets.TOCWidget.buildList(TOCWidget.java:165) + fitnesse.wikitext.widgets.TOCWidget.buildContentsDiv(TOCWidget.java:150) + fitnesse.wikitext.widgets.TOCWidget.render(TOCWidget.java:111) + fitnesse.wikitext.widgets.ParentWidget.childHtml(ParentWidget.java:70) + fitnesse.wikitext.widgets.WidgetRoot.render(WidgetRoot.java:92) + fitnesse.wiki.PageData.processHTMLWidgets(PageData.java:196) + fitnesse.wiki.PageData.getHtml(PageData.java:166) + fitnesse.responders.WikiPageResponder.generateHtml(WikiPageResponder.java:95) + fitnesse.responders.WikiPageResponder.makeHtml(WikiPageResponder.java:87) + fitnesse.responders.WikiPageResponder.makePageResponse(WikiPageResponder.java:70) + fitnesse.responders.WikiPageResponder.makeResponse(WikiPageResponder.java:45) + fitnesse.FitNesseExpediter.createGoodResponse(FitNesseExpediter.java:122) + fitnesse.FitNesseExpediter.makeResponse(FitNesseExpediter.java:105) + fitnesse.FitNesseExpediter.start(FitNesseExpediter.java:47) + fitnesse.FitNesseServer.serve(FitNesseServer.java:24) + fitnesse.FitNesseServer.serve(FitNesseServer.java:17) + fitnesse.socketservice.SocketService$ServerRunner.run(SocketService.java:88) + java.lang.Thread.run(Thread.java:613) +}}} \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureMultipleKeys/VirtualWikiNetworkError/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureMultipleKeys/VirtualWikiNetworkError/properties.xml new file mode 100644 index 0000000..fb4f663 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureMultipleKeys/VirtualWikiNetworkError/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + 691318166473579374 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureMultipleKeys/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureMultipleKeys/content.txt new file mode 100644 index 0000000..9b77214 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureMultipleKeys/content.txt @@ -0,0 +1,42 @@ +The queries in a RowFixture can use more than one key. + +Suppose we have records of the last three months worth of paychecks. Each paycheck is uniquely identified by the ''employeeId'' and the ''date''. We want to make sure that the checks were generated properly. + +|!-fitnesse.fixtures.PayCheckRecordFixture-!| +|date|employeeId|name|pay()| +|3/1/03|1||1000| +|4/1/03|1||1015| +|3/1/03|2||2002| +|4/1/03|2||2003| + +Notice, once again, that the order of the table rows doesn't matter. For example: + +|!-fitnesse.fixtures.PayCheckRecordFixture-!| +|date|employeeId|name|pay()| +|3/1/03|2||2002| +|3/1/03|1||1000| +|4/1/03|1||1015| +|4/1/03|2||2003| + +Notice also that the blank cell was not used as part of the key. Rather it was just filled in for you so you could visually check things. Here's what would have happened if we had tried to fill in the ''name'' column. + +|!-fitnesse.fixtures.PayCheckRecordFixture-!| +|date|employeeId|name|pay()| +|3/1/03|1|Bob|1000| +|4/1/03|1|Bob|1015| +|3/1/03|2|Bill|2002| +|4/1/03|2|Biff|2003| + +And here's what would happen if a row were missing or surplus. + +|!-fitnesse.fixtures.PayCheckRecordFixture-!| +|date|employeeId|name|pay()| +|3/1/03|1||1000| +|4/1/03|1||1015| +|3/1/03|2||2002| +|4/1/03|3||2003| + +!img http://files/images/runArrow.gif Now check out DesigningWithRowFixture. + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureMultipleKeys/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureMultipleKeys/properties.xml new file mode 100644 index 0000000..2fde38f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/RowFixtureMultipleKeys/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + 1052243133945 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/SummaryFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/SummaryFixture/content.txt new file mode 100644 index 0000000..cb373ee --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/SummaryFixture/content.txt @@ -0,0 +1,21 @@ +!3 A Fixture for summarising the tests run on a page. + +The [[!-FitFramework-!][ + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/SymbolsInTestTables/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/SymbolsInTestTables/content.txt new file mode 100644 index 0000000..38e0e31 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/SymbolsInTestTables/content.txt @@ -0,0 +1,19 @@ +!1 Symbols: Passing Data Between Test Tables +Sometimes you want to pass information between test tables. Let's say you added a record to a database, and the database automatically generated a key to that record. And lets say that in another table you wanted to use that key to fetch the record back. You can use ''symbols'' for this. + +!|SaveRecordInDatabase| +|name|date |=key? | +|Bob |today|bobKey | +|Bill|later|billKey| + +In this table two records are added to the database. The keys for each record are saved in symbols named ''bobKey'' and ''billKey''. The ''=key?'' header indicates that the output of the ''key()'' method of the fixture is to be stored in a symbol whose name is in the cell. + +!|FetchRecordsFromDatabase| +|key= |fetch()|name|date | +|billKey|true |Bill|later| +|bobKey |true |Bob |today| + +In this table the two keys are used to fetch the database records. The ''key='' header indicates that the value of the symbol whose name is in the cell should be stored in the ''key'' variable of the fixture. + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/SymbolsInTestTables/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/SymbolsInTestTables/properties.xml new file mode 100644 index 0000000..67c0954 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/SymbolsInTestTables/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TableFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TableFixture/content.txt new file mode 100644 index 0000000..bf84bff --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TableFixture/content.txt @@ -0,0 +1,75 @@ +!1 Custom Test Table Styles: !-TableFixture-! +Sometimes, none of the existing TestTableStyles is exactly what you need to represent your various inputs and outputs properly. In thise case, programmers can use the TableFixture style of [[!-FixtureCode-!][ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TestTableStyles/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TestTableStyles/content.txt new file mode 100644 index 0000000..ebe9d10 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TestTableStyles/content.txt @@ -0,0 +1,28 @@ +As we've seen, every FitNesse test table begins with a row that contains the classname of the [[Fixture Code][ + + + + + + +1225638851855 +-7252112341624248203 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TimedActionFixture/VirtualWikiNetworkError/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TimedActionFixture/VirtualWikiNetworkError/content.txt new file mode 100644 index 0000000..576a80b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TimedActionFixture/VirtualWikiNetworkError/content.txt @@ -0,0 +1,31 @@ +{{{java.net.MalformedURLException: no protocol: null?responder=proxy&type=bones + java.net.URL.(URL.java:567) + java.net.URL.(URL.java:464) + java.net.URL.(URL.java:413) + fitnesse.wiki.ProxyPage.retrievePage(ProxyPage.java:51) + fitnesse.wiki.VirtualCouplingExtension.loadVirtualChildren(VirtualCouplingExtension.java:45) + fitnesse.wiki.VirtualCouplingExtension.detectAndLoadVirtualChildren(VirtualCouplingExtension.java:40) + fitnesse.wiki.VirtualCouplingExtension.getVirtualCoupling(VirtualCouplingExtension.java:33) + fitnesse.wikitext.widgets.TOCWidget.buildListOfChildPages(TOCWidget.java:269) + fitnesse.wikitext.widgets.TOCWidget.buildList(TOCWidget.java:164) + fitnesse.wikitext.widgets.TOCWidget.buildContentsDiv(TOCWidget.java:150) + fitnesse.wikitext.widgets.TOCWidget.buildListItem(TOCWidget.java:190) + fitnesse.wikitext.widgets.TOCWidget.buildList(TOCWidget.java:165) + fitnesse.wikitext.widgets.TOCWidget.buildContentsDiv(TOCWidget.java:150) + fitnesse.wikitext.widgets.TOCWidget.render(TOCWidget.java:111) + fitnesse.wikitext.widgets.ParentWidget.childHtml(ParentWidget.java:70) + fitnesse.wikitext.widgets.WidgetRoot.render(WidgetRoot.java:92) + fitnesse.wiki.PageData.processHTMLWidgets(PageData.java:196) + fitnesse.wiki.PageData.getHtml(PageData.java:166) + fitnesse.responders.WikiPageResponder.generateHtml(WikiPageResponder.java:95) + fitnesse.responders.WikiPageResponder.makeHtml(WikiPageResponder.java:87) + fitnesse.responders.WikiPageResponder.makePageResponse(WikiPageResponder.java:70) + fitnesse.responders.WikiPageResponder.makeResponse(WikiPageResponder.java:45) + fitnesse.FitNesseExpediter.createGoodResponse(FitNesseExpediter.java:122) + fitnesse.FitNesseExpediter.makeResponse(FitNesseExpediter.java:105) + fitnesse.FitNesseExpediter.start(FitNesseExpediter.java:47) + fitnesse.FitNesseServer.serve(FitNesseServer.java:24) + fitnesse.FitNesseServer.serve(FitNesseServer.java:17) + fitnesse.socketservice.SocketService$ServerRunner.run(SocketService.java:88) + java.lang.Thread.run(Thread.java:613) +}}} \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TimedActionFixture/VirtualWikiNetworkError/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TimedActionFixture/VirtualWikiNetworkError/properties.xml new file mode 100644 index 0000000..473389b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TimedActionFixture/VirtualWikiNetworkError/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + 1336490504060957026 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TimedActionFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TimedActionFixture/content.txt new file mode 100644 index 0000000..3e92fc4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TimedActionFixture/content.txt @@ -0,0 +1,23 @@ +!2 Seeing How Long ActionFixture Actions Take: !-TimedActionFixture-! + +You can used !-TimedActionFixture-! if you want to see visual feedback on how long certain functions take to execute. + +|!-fit.TimedActionFixture-!| +|start|!-fitnesse.fixtures.DelayedCountFixture-!| +|check|counter|0| +|press|count| +|check|counter|1| +|press|count| +|check|counter|2| +|enter|counter|5| +|press|count| +|check|counter|6| + +The !-DelayedCountFixture-! used above simply adds a random delay to the ''count'' function. + +The !-TimedActionFixture-! does not report any delays that are less than one second. I don't know why Ward decided to impose this lower limit. Perhaps he'll remove it one day. + +This fixture does not appear to give you access to the time or the ''split''. It just displays them for your edification. + +For more on ActionFixture see: DesigningWithActionFixture. + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TimedActionFixture/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TimedActionFixture/properties.xml new file mode 100644 index 0000000..e74701a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TimedActionFixture/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + +1052336927152 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TroubleshootingAcceptanceTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TroubleshootingAcceptanceTests/content.txt new file mode 100644 index 0000000..629b0dd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/TroubleshootingAcceptanceTests/content.txt @@ -0,0 +1,5 @@ +|''If you see exceptions in the tables.''|!c ExceptionsInFitTables| +|''If you see an ATTENTION message.'' |!c + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SetUp/content.txt new file mode 100644 index 0000000..5258ed7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SetUp/content.txt @@ -0,0 +1,2 @@ +|Import| +|eg.bowling.fixtures| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SetUp/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SetUp/properties.xml new file mode 100644 index 0000000..67c0954 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SetUp/properties.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestFinalScores/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestFinalScores/content.txt new file mode 100644 index 0000000..9ce2c1b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestFinalScores/content.txt @@ -0,0 +1,14 @@ +Rules of bowling. + +Spare: 10 + next ball. +Strike: 10 + next two balls. +Otherwise sum of two balls in frame. + +|Final score| +|1|4|3|7|5|2|10|10|5|5|3|2|1|0|7|1|5|5|3|||112| + +|Final score| +|10|10|10|10|10|10|10|10|10|10|10|10||||||||||300| + +|Final score| +|10|10|10|10|10|10|10|10|10|10|10|9||||||||||299| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestFinalScores/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestFinalScores/properties.xml new file mode 100644 index 0000000..a4268e0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestFinalScores/properties.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestGames/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestGames/content.txt new file mode 100644 index 0000000..48415e4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestGames/content.txt @@ -0,0 +1,13 @@ +|Simple score game.| +|1|4|3|7|5|2|10|10|5|5|3|2|1|0|7|1|5|5|3||| +|5|20|27|52|72|85|90|91|99|112| + +|Simple score game.| +|10|10|10|10|10|10|10|10|10|10|10|10|||||||||| +|30|60|90|120|150|180|210|240|270|300| + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestGames/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestGames/properties.xml new file mode 100644 index 0000000..a4268e0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestGames/properties.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestGamesWithFancyFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestGamesWithFancyFixture/content.txt new file mode 100644 index 0000000..8c4fd63 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestGamesWithFancyFixture/content.txt @@ -0,0 +1,13 @@ +|Score game.| +|1-1|1-2|2-1|2-2|3-1|3-2|4-1|4-2|5-1|5-2|6-1|6-2|7-1|7-2|8-1|8-2|9-1|9-2|10-1|10-2|10-3| +| 1 | 4 | 3 | / | 5 | 2 | | X | | X | 5 | / | 3 | 2 | 1 | 0 | 7 | 1 | 5 | / | 3 | +|| 5 || 20|| 27|| 52|| 72|| 85|| 90|| 91|| 99|| 112| | + +|Score game.| +|1-1|1-2|2-1|2-2|3-1|3-2|4-1|4-2|5-1|5-2|6-1|6-2|7-1|7-2|8-1|8-2|9-1|9-2|10-1|10-2|10-3| +| | X | | X | | X | | X | | X | | X | | X | | X | | X | X | X | X | +|| 30|| 60|| 90|| 120|| 150|| 180|| 210|| 240|| 270|| 300| | + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestGamesWithFancyFixture/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestGamesWithFancyFixture/properties.xml new file mode 100644 index 0000000..a4268e0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/TestGamesWithFancyFixture/properties.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/content.txt new file mode 100644 index 0000000..33c0fd5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/content.txt @@ -0,0 +1,3 @@ +^TestFinalScores +^TestGames +^TestGamesWithFancyFixture diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/properties.xml new file mode 100644 index 0000000..2ae2533 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteGames/properties.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/PerfectGameTiming/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/PerfectGameTiming/content.txt new file mode 100644 index 0000000..366464b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/PerfectGameTiming/content.txt @@ -0,0 +1,17 @@ +|Game timing.| +|pins|roll()|currentFrame()|currentBall()|scorableFrame()|currentScore()|validGame()|gameOver()| +| - | | 1 | 1 | 0 | 0 | true | false | +| 10 | | 2 | 1 | 0 | 0 | true | false | +| 10 | | 3 | 1 | 0 | 0 | true | false | +| 10 | | 4 | 1 | 1 | 30 | true | false | +| 10 | | 5 | 1 | 2 | 60 | true | false | +| 10 | | 6 | 1 | 3 | 90 | true | false | +| 10 | | 7 | 1 | 4 | 120 | true | false | +| 10 | | 8 | 1 | 5 | 150 | true | false | +| 10 | | 9 | 1 | 6 | 180 | true | false | +| 10 | | 10 | 1 | 7 | 210 | true | false | +| 10 | | 10 | 2 | 8 | 240 | true | false | +| 10 | | 10 | 3 | 9 | 270 | true | false | +| 10 | | 10 | 0 | 10 | 300 | true | true | + +|Summary| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/PerfectGameTiming/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/PerfectGameTiming/properties.xml new file mode 100644 index 0000000..a4268e0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/PerfectGameTiming/properties.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestGutterGameTiming/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestGutterGameTiming/content.txt new file mode 100644 index 0000000..c173d5d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestGutterGameTiming/content.txt @@ -0,0 +1,25 @@ +|Game timing.| +|pins|roll()|currentFrame()|currentBall()|scorableFrame()|currentScore()|validGame()|gameOver()| +| - | | 1 | 1 | 0 | 0 | true | false | +| 0 | | 1 | 2 | 0 | 0 | true | false | +| 0 | | 2 | 1 | 1 | 0 | true | false | +| 0 | | 2 | 2 | 1 | 0 | true | false | +| 0 | | 3 | 1 | 2 | 0 | true | false | +| 0 | | 3 | 2 | 2 | 0 | true | false | +| 0 | | 4 | 1 | 3 | 0 | true | false | +| 0 | | 4 | 2 | 3 | 0 | true | false | +| 0 | | 5 | 1 | 4 | 0 | true | false | +| 0 | | 5 | 2 | 4 | 0 | true | false | +| 0 | | 6 | 1 | 5 | 0 | true | false | +| 0 | | 6 | 2 | 5 | 0 | true | false | +| 0 | | 7 | 1 | 6 | 0 | true | false | +| 0 | | 7 | 2 | 6 | 0 | true | false | +| 0 | | 8 | 1 | 7 | 0 | true | false | +| 0 | | 8 | 2 | 7 | 0 | true | false | +| 0 | | 9 | 1 | 8 | 0 | true | false | +| 0 | | 9 | 2 | 8 | 0 | true | false | +| 0 | | 10 | 1 | 9 | 0 | true | false | +| 0 | | 10 | 2 | 9 | 0 | true | false | +| 0 | | 10 | 0 | 10 | 0 | true | true | + +|Summary| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestGutterGameTiming/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestGutterGameTiming/properties.xml new file mode 100644 index 0000000..a4268e0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestGutterGameTiming/properties.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestNoMarksTiming/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestNoMarksTiming/content.txt new file mode 100644 index 0000000..d5c7cfd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestNoMarksTiming/content.txt @@ -0,0 +1,25 @@ +|Game timing.| +|pins|roll()|currentFrame()|currentBall()|scorableFrame()|currentScore()|validGame()|gameOver()| +| - | | 1 | 1 | 0 | 0 | true | false | +| 1 | | 1 | 2 | 0 | 0 | true | false | +| 2 | | 2 | 1 | 1 | 3 | true | false | +| 3 | | 2 | 2 | 1 | 3 | true | false | +| 4 | | 3 | 1 | 2 | 10 | true | false | +| 5 | | 3 | 2 | 2 | 10 | true | false | +| 4 | | 4 | 1 | 3 | 19 | true | false | +| 3 | | 4 | 2 | 3 | 19 | true | false | +| 2 | | 5 | 1 | 4 | 24 | true | false | +| 1 | | 5 | 2 | 4 | 24 | true | false | +| 0 | | 6 | 1 | 5 | 25 | true | false | +| 1 | | 6 | 2 | 5 | 25 | true | false | +| 2 | | 7 | 1 | 6 | 28 | true | false | +| 3 | | 7 | 2 | 6 | 28 | true | false | +| 4 | | 8 | 1 | 7 | 35 | true | false | +| 5 | | 8 | 2 | 7 | 35 | true | false | +| 4 | | 9 | 1 | 8 | 44 | true | false | +| 3 | | 9 | 2 | 8 | 44 | true | false | +| 2 | | 10 | 1 | 9 | 49 | true | false | +| 1 | | 10 | 2 | 9 | 49 | true | false | +| 0 | | 10 | 0 | 10 | 50 | true | true | + +|Summary| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestNoMarksTiming/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestNoMarksTiming/properties.xml new file mode 100644 index 0000000..a4268e0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestNoMarksTiming/properties.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestSpareAndStrikeTiming/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestSpareAndStrikeTiming/content.txt new file mode 100644 index 0000000..983cc30 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestSpareAndStrikeTiming/content.txt @@ -0,0 +1,24 @@ +|Game timing.| +|pins|roll()|currentFrame()|currentBall()|scorableFrame()|currentScore()|validGame()|gameOver()| +| - | | 1 | 1 | 0 | 0 | true | false | +| 5 | | 1 | 2 | 0 | 0 | true | false | +| 5 | | 2 | 1 | 0 | 0 | true | false | +| 3 | | 2 | 2 | 1 | 13 | true | false | +| 2 | | 3 | 1 | 2 | 18 | true | false | +| 7 | | 3 | 2 | 2 | 18 | true | false | +| 3 | | 4 | 1 | 2 | 18 | true | false | +| 10 | | 5 | 1 | 3 | 38 | true | false | +| 5 | | 5 | 2 | 3 | 38 | true | false | +| 5 | | 6 | 1 | 4 | 58 | true | false | +| 10 | | 7 | 1 | 5 | 78 | true | false | +| 3 | | 7 | 2 | 5 | 78 | true | false | +| 4 | | 8 | 1 | 7 | 102 | true | false | +| 5 | | 8 | 2 | 7 | 102 | true | false | +| 4 | | 9 | 1 | 8 | 111 | true | false | +| 3 | | 9 | 2 | 8 | 111 | true | false | +| 5 | | 10 | 1 | 9 | 119 | true | false | +| 5 | | 10 | 2 | 9 | 119 | true | false | +| 5 | | 10 | 3 | 9 | 119 | true | false | +| 5 | | 10 | 0 | 10 | 134 | true | true | + +|Summary| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestSpareAndStrikeTiming/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestSpareAndStrikeTiming/properties.xml new file mode 100644 index 0000000..a4268e0 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/TestSpareAndStrikeTiming/properties.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/content.txt new file mode 100644 index 0000000..ccc53a2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/content.txt @@ -0,0 +1,5 @@ +^TestGutterGameTiming +^TestNoMarksTiming +^TestSpareAndStrikeTiming +^PerfectGameTiming + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/properties.xml new file mode 100644 index 0000000..2ae2533 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/SuiteTiming/properties.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/content.txt new file mode 100644 index 0000000..eb355f4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/content.txt @@ -0,0 +1,8 @@ +The Bowling Game is a simple sample project showing acceptance testing. + +^SuiteGames +^SuiteTiming + +^SetUp + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/properties.xml new file mode 100644 index 0000000..7387ef7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/BowlingGameProject/properties.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/content.txt new file mode 100644 index 0000000..a1aab9c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/WritingFitTables/content.txt @@ -0,0 +1,24 @@ +The name of a ''fitnesse test page'' begins with '''"Test"''', or has the '''Test''' attribute set. See [[Page Attributes][ + + + + + + + +1238175729166 +-404914652185593072 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/content.txt new file mode 100644 index 0000000..5e89601 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/content.txt @@ -0,0 +1,13 @@ +!1 The Fit Acceptance Testing Framework +Fit ("Framework for Integrated Testing"), also often spelled [[FIT][http://fit.c2.com/]] is the engine that actually processes each FitNesse test table, using the FixtureCode referred to by that table. The idea of test tables and the set of >TestTableStyles come from Fit. Examples of use can be found in the [[Fixture Gallery][TestTableStyles +Articles and discussions on the design of FitNesse + +| >FitServer | The protocol between FitNesse and Fit. | diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/properties.xml new file mode 100644 index 0000000..d75a19f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FitFramework/properties.xml @@ -0,0 +1,8 @@ + + + + + +1238103113455 +7644526656102173911 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FixtureCode/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FixtureCode/content.txt new file mode 100644 index 0000000..5928caa --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/FixtureCode/content.txt @@ -0,0 +1,162 @@ +!***< hidden + +!define TEST_SYSTEM {slim} +*! + +In the [[Two Minute Example][ + + +Under The Covers : Fixture Code +true + + +1238165191090 +4545566180239902012 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/GracefulName/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/GracefulName/content.txt new file mode 100644 index 0000000..508d839 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/GracefulName/content.txt @@ -0,0 +1,27 @@ +!1 Improving Readability using ''Graceful Names'' +If you are not yet accustomed to it, you can make your test tables much more pleasant to read by using ''graceful name'' notation. + +Say you have a fixture class named ''!-payroll.fixtures.PaycheckInspector-!'' you can references in your fixture tables as ''Paycheck inspector''. Both Fit and Slim will manipulate that name back into ''!-PaycheckInspector-!'' by removing punctuation and using camel case. They will then hunt through a list of known packages for the fixture. + +A similar transformation happens with variable and method names too. + +Therefore instead of this: + +!|payroll.fixtures.PaycheckInspector| +|employeeId|employeeName|payAmount()| +|24|Bob|1500| + +You can have this: + +!|Paycheck inspector.| +|employee id|employee name|pay amount?| +|24|Bob|1500| + +You can add to the list of packages by using the ''Import'' fixture as follows. + +|Import| +|payroll.fixtures| + +This table should appear ''above'' the tables that use the ''!-PaycheckInspector-!'' fixture. It's a good idea to put your ''Import'' fixtures in a !-SetUp-! page. + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/GracefulName/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/GracefulName/properties.xml new file mode 100644 index 0000000..f2a4786 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/GracefulName/properties.xml @@ -0,0 +1,8 @@ + + + + true + + 1225603612907 + -1576090897176335033 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RestfulTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RestfulTests/content.txt new file mode 100644 index 0000000..bf19fd5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RestfulTests/content.txt @@ -0,0 +1,68 @@ +The XML result for a test comes back in the following form: +{{{ + + SuiteAcceptanceTests + + SuiteWidgetTests.TestBrokenWikiWordLink + critical,slow + + 24 + 0 + 0 + 0 + + + 1022 + + + + +
        + decisionTable_0 + + cell_contents + ... + + ... +
        + ... + + + + [decisionTable_1_0, make, decisionTable_1, SetUp] + OK + + decisionTable_1_0 + right + 0 + 0 + ConstructionExpectation + OK + SetUp + pass(SetUp) + + ... + + ... + + + +}}} + + +The 'tables' and 'instructions' elements are only for Slim tests. + * The 'tables' element encodes the results of all the test tables. There is a !style_code() for each table on the test page. Each has a set of !style_code() elements, which each have a set of !style_code() elements, which old the contents of the tested table. + * The contents of the columns are encoded with !style_code[pass(xxx)], !style_code[fail(xxx)] etc. These show what parts of the cell contents would be colored red or green + * The name of the table is encoded in the !style_code() element. This is the name that slim gives to the table, and is used to prefix instruction tags in the expectations (see below). + * The instruction data documents the slim execution process. Each instruction represents a single slim command. You see the command as it was sent to slim, the result as it returned from slim, and the evaluation of the slim table expectation. This is pretty detailed information, so here are a few things you should know. + * !style_code(instructionId) is the id of a single slim instruction. It is constructed from the table name (see above), and the instruction number within that table. So an id of decisionTable_1_3 means that the instruction is for the third instruction in the table named decision table_1. + * Scenario tables, when executed, are turned into script tables with the same number. So !style_code(scenarioTable_22) will become !style_code(scriptTable_22). The third instruction in scenario table 18 called from the 4th instruction in decision table 8 will be !style_code(decisionTable_8_4_scriptTable_18_3). + * !style_code(col,row) are the column and row of the expectation. If scenario tables are involved it's the col,row of the ultimate scenario. + * !style_code(type) is the class name of the expectation. You can pretty much work out the intent. Here are a few of the more common ones + * !style_code(!-ReturnedValueExpectation-!) - This is the one that does almost all the comparisons that you are used to. Decision tables and script tables use them a lot. + * !style_code(!-VoidReturnExpectation-!) - We use this when we call a function (like 'setX') and expect a void return. + * !style_code(!-ConstructionExpectation-!) - used when we create a fixture class. + * !style_code(expected) - This is the value that the expectation expects to be returned from slim. Often this is ignored. Only some expectations actually use it. !style_code(!-ReturnedValueExpectation-!) uses it of course. + * !style_code(actual) - This is what was actually returned by slim. You also saw this in the !style_code(slimResult) tag, but we present it here because it may have been massaged by internal processing. + * !style_code(evaluationMessage) - This is the result of the expectation. It is a message littered with !style_code[pass()] and !style_code[fail()] markers that let you see the red/green results in symbolic form. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RestfulTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RestfulTests/properties.xml new file mode 100644 index 0000000..f677bed --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RestfulTests/properties.xml @@ -0,0 +1,13 @@ + + + true + true + true + true + true + true + true + true + 1238693962013 + -8421131222935524094 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningAcceptanceTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningAcceptanceTests/content.txt new file mode 100644 index 0000000..1203d2a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningAcceptanceTests/content.txt @@ -0,0 +1,20 @@ +Acceptance tests are run by hitting the '''Test''' button (or typing ''ALT-t''). This button appears on any page that has the '''Test''' attribute set. See [[Page Attributes][PageProperties]]. + +Any tables that are on the page are run through the Fit framework (See http://fit.c2.com ). + +So, for example, click the '''Test''' button (or type ''ALT-t'') and see what happens to the table below: + +|eg.Division| +|numerator|denominator|quotient?| +|10|2|5| +|12.6|3|4.2| +|-3|3|-1| +|100|0|0| +|33|3|11| + +TroubleshootingAcceptanceTests + +!see CustomizingTestExecution + +---- +You may also run FitNesseTests by using the CommandLineTestRunner! diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningAcceptanceTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningAcceptanceTests/properties.xml new file mode 100644 index 0000000..632ab49 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningAcceptanceTests/properties.xml @@ -0,0 +1,11 @@ + + + + + true + + + + + 1052055454364 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningFromJunit/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningFromJunit/content.txt new file mode 100644 index 0000000..51ac42d --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningFromJunit/content.txt @@ -0,0 +1,36 @@ +You can run FitNesse Java (Fit and Slim) tests from a developer IDE without starting the FitNesse server. This is a developer-centric approach to running tests and is not suitable for collaboration with customers or testers, but it is very efficient for troubleshooting purposes. FitNesse includes a set of JUnit 4 runner that enables you to execute a test or a suite using JUnit. The runner will execute FitNesse tests in-process by default, allowing you to debug and inspect the fixture or domain code during test execution. Test pass/failure reports are integrated with JUnit but the normal page output (tables etc) gets saved to the disk for later inspection, if required. + +The !-FitNese-! runner will report about individual test pages being executed by JUnit. For IDE's this means that the JUnit report window and give you detailed statistics for individual tests in a suite. + +!2 Using the !-FitNese-! runner +To use the !-FitNese-! runner, Define !-fitnesse.junit.FitNesseSuite-! as the runner for a specific test class, using @org.junit.runner.RunWith(). Set the test or suite name to run using the @Name attribute, the root FitNesse path using !-@FitNesseDir-! attribute and the result directory using !-@OutputDir-! attribute.[[Here's a full example.][https://github.com/unclebob/fitnesse/blob/master/test/fitnesse/junit/FitNesseRunnerTest.java]] + +!2 What about JUnitHelper? +JUitHelper is no more. Main reason for this is that FitNesse has become more modular. Now it's possible to execute a set of tests with only a few lines of code. The basics are: + + * build a context: + +{{{FitNesseContext context = new ContextConfigurator(properties /* a java.util.Properties instance */).makeFitNesseContext();}}} + + * get a set of pages you want to execute: + +{{{List pagesToExecute = new SuiteContentsFinder(suiteRoot, null /* optional fitnesse.testrunner.SuiteFilter */, context.root).getAllPagesToRunForThisSuite();}}} + + * build a test runner, provide a descriptor with the execution details (e.g. debug mode) for the tests: + +{{{final String classPath = new ClassPathBuilder().buildClassPath(pages); +final PagesByTestSystem pagesByTestSystem = new PagesByTestSystem(pages, context.root, new PagesByTestSystem.DescriptorFactory() { + @Override + public Descriptor create(WikiPage page) { + return new WikiPageDescriptor(page.readOnlyData(), true /* run in-process */, false /* remote debug */, classPath); + } +}); +MultipleTestsRunner testRunner = new MultipleTestsRunner(pagesByTestSystem, context.runningTestingTracker, context.testSystemFactory);}}} + + * register a !-TestSystemListener-! on the test runner: + +{{{testRunner.addTestSystemListener(new TestSystemListener() { ... });}}} + + * execute the tests; test results are reported through the listener: + +{{{testRunner.executeTestPages();}}} diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningFromJunit/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningFromJunit/properties.xml new file mode 100644 index 0000000..d30aa8f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningFromJunit/properties.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningFromMaven/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningFromMaven/content.txt new file mode 100644 index 0000000..b35ecd8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningFromMaven/content.txt @@ -0,0 +1,7 @@ +If you want to run FitNesse tests via Maven there are a couple of options: + +1. Use the FitNesse Launcher plugin: http://fitnesse-launcher-maven-plugin.googlecode.com/svn/maven/site/fitnesse-launcher-maven-plugin/config.html +2. Use the Mafia Maven plugin: https://github.com/sijpesteijn/mafia-maven-plugin +3. Use the Maven Ant plugin: http://blog.xebia.com/fitnesse-and-dependency-management-with-maven + +All performing the same basic tasks (start a server, run tests via a ''test'' or ''integration-test'' target). diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningFromMaven/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningFromMaven/properties.xml new file mode 100644 index 0000000..d30aa8f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/RunningFromMaven/properties.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/CommentTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/CommentTable/content.txt new file mode 100644 index 0000000..6d64934 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/CommentTable/content.txt @@ -0,0 +1,4 @@ +|Comment| +|Comment tables are simply not executed| +|You|Can|Put|Anything|You|Want|Into|Them| +|The only requirement|is that the first|cell of the table|must be the word|comment| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/CommentTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/CommentTable/properties.xml new file mode 100644 index 0000000..532eb64 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/CommentTable/properties.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + 1225490422970 + -5059229174992629731 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ConstructorArguments/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ConstructorArguments/content.txt new file mode 100644 index 0000000..0254b9e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ConstructorArguments/content.txt @@ -0,0 +1,5 @@ +Most tables use some kind of fixture class. That class will be constructed once for each table. You can pass constructor arguments simply by adding those arguments in table cells after the constructor name. + +|Decision:my decision table|constructor argument 1|constructor argument 2| +|...| + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ConstructorArguments/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ConstructorArguments/properties.xml new file mode 100644 index 0000000..a76d1eb --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ConstructorArguments/properties.xml @@ -0,0 +1,13 @@ + + + true + true + true + true + true + true + true + true + 1225293418146 + 4034578242887246818 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/CustomTypes/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/CustomTypes/content.txt new file mode 100644 index 0000000..32e8131 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/CustomTypes/content.txt @@ -0,0 +1,23 @@ +!2 Adding custom type converters to Slim (Java) +If you have a fixture whose methods take or return a class that is not one of the standard Slim types, you can add a customer type converter very easily. There are two different ways to do this. + +First, you can use the standard !style_code(!-PropertyEditor-!) mechanism. You can read about this in the Javadocs for !style_code(!-PropertyEditor-!). In short, if you have a class named !style_code(!-MyType-!) you can create a class named !style_code(!-MyTypeEditor-!) that implements the !style_code(!-PropertyEditor-!) interface (usually by extending !style_code[!-PropertyEditorSupport-!]). That's pretty much it. There are three different search paths for this class, but I'll let you read about that in the Javadocs. +!note There is an example of this in !-fitnesse.slim.test.ZorkEditor-! + +Or, you can use the lower level approach of registering a converter. +The converter must derive from !-fitnesse.slim.Converter-!. +{{{ +package fitnesse.slim; +public interface Converter { + public String toString(Object o); + Object fromString(String arg); +} }}} As you can see this is pretty simple. Your derivative must implement the toString method to convert your type to a string; and it must implement the fromString method to convert the string into your custom type. + +Then, in the constructor of first fixture to uses that type simply put the following line of code: {{{fitnesse.slim.converters.ConverterRegistry.addConverter(MyClass.class, new MyClassConverter())}}} + +'''Please note''' the application of converters to methods returning !style_code[List]s is special: whether a converter is applied to a method's result depends on its ''declared'' return type: + * List (exactly, no sub-interface or class implementing it): converter is '''not applied''' (this is needed for some Slim tables, such as !-QueryTable-!). + * All return types: converter is applied, based on the actual class of the object returned, or on its declared type when !style_code[null] is returned + + +The technique for other language platforms should be similar to this. Check the documentation of the Slim port for your platform. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/CustomTypes/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/CustomTypes/properties.xml new file mode 100644 index 0000000..deb1d6f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/CustomTypes/properties.xml @@ -0,0 +1,13 @@ + + +true +true +true +true +true +true +true +true +1232745959476 +4415644922513391702 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DataTypes/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DataTypes/content.txt new file mode 100644 index 0000000..6579b3b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DataTypes/content.txt @@ -0,0 +1,11 @@ +!1 Data types + * For numerics, the Java format is used. e.g. Integer.parseInt() or Double,parseDouble() calls. + * Boolean maps to the strings "true" and "false". + * Dates convert in and out of a date format of the form dd-MMM-yyyy. (e.g. 10-Oct-1970) + * Lists of strings are mapped to simple strings of the form ''[a, b, c]''. Note the brackets and spaces. This is the standard ''toString'' format for Java Lists. + * Arrays of Booleans, Integers, Strings, and Doubles map to the form ''[x, y, z]''. + * !see CustomTypes + +!3 Maps. +The [[Hash Widget][ (or a hash in the case of Ruby). + \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DataTypes/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DataTypes/properties.xml new file mode 100644 index 0000000..ca161f8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DataTypes/properties.xml @@ -0,0 +1,13 @@ + + + true + true + true + true + true + true + true + true + 1225481584437 + 6085177871853100391 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DecisionTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DecisionTable/content.txt new file mode 100644 index 0000000..3dd68b9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DecisionTable/content.txt @@ -0,0 +1,116 @@ +|should I buy milk | +|cash in wallet|credit card|pints of milk remaining|go to store?| +|0 |no |0 |no | +|10 |no |0 |yes | +|0 |yes |0 |yes | +|10 |yes |0 |yes | +|0 |no |1 |no | +|10 |no |1 |no | +|0 |yes |1 |no | +|10 |yes |1 |nope | + +This is a decision table; sometimes known as a truth table. This particular table has three inputs and one output. + +Here is the fixture code that it invokes:{{{ +package fitnesse.slim.test; + +public class ShouldIBuyMilk { + private int dollars; + private int pints; + private boolean creditCard; + + public void setCashInWallet(int dollars) { + this.dollars = dollars; + } + + public void setPintsOfMilkRemaining(int pints) { + this.pints = pints; + } + + public void setCreditCard(String valid) { + creditCard = "yes".equals(valid); + } + + public String goToStore() { + return (pints == 0 && (dollars > 2 || creditCard)) ? "yes" : "no"; + } + + // The following functions are optional. If they aren't declared they'll be ignored. + public void execute() { + } + + public void reset() { + } + + public void table(List> table) { + } + + public void beginTable() { + } + + public void endTable() { + } +} }}} + +That pretty much explains it all. But let's look at the details a bit more closely. + +First of all, there's the name of the table: "should I buy milk". This is named for a decision to be made. That's good style. Decision tables should be named for decisions.Howeverthat name also translates to the fixture class !-ShouldIBuyMilk-!. If you run this test you'll notice that the name turns green. This means that Slim found the fixture class and was able to create an instance of it. + +The first cell could also have been ''Decision: should I buy milk,'' ''DT: should I buy milk'', or ''ShouldIBuyMilk'', etc.. The code ''Decision:'' or ''DT:'' tells Slim what kind of table this is.Decisiontable is the default. + +Next, there's the row of column headers. If you look carefully at them you'll see that they all correspond to functions in the fixture class. However, the first three correspond to ''set'' functions. That's because they don't have a ''?''. The Decision Table considers them tobe inputs, and automatically calls the appropriately named ''set'' function. + +The last column header does have a ''?''. Decision Table considers it to be an output and so calls it as a function and expects a return value. That return value is compared to the contents of the column and turns the corresponding cell red or green depending whether it matches. Note that the cell that contains 'nope' does not match the 'no' that is returned. + +The flow is very simple. + + 1 First the !style_code(ShouldIBuyMilk) fixture is constructed. + 1 Next the !style_code(table) method is called if it exists. (see below). + 1 Next the !style_code(beginTable) method is called, if it exists. Use this for initializations if you want to. + 1 Then for each row in the table: + 1 First the !style_code(reset) function is called (if present), just in case you want to prepare or clean up. + 1 Then all the inputs are loaded by calling the appropriate !style_code(set) functions. Inputs are loaded in the left to right order of their appearance in the header. + 1 Then the !style_code(execute) function of the fixture is called (if present). + 1 Finallyall the output functions are called, again in left to right order, and the return values compared to their table cells. + 1 Finally the !style_code(endTable) method is called, if it exists. Use this for closedown and cleanup if you want to. + +!4 Optional Functions + * !style_code(beginTable) - is called once, just after the !style_code(table) method, and just before the rows are processed. This is for setup and initialization stuff. + * !style_code(endTable) = is called once, just after the last row has been processed. It's the last function to be called by the table. Use it for cleanup and closedowns. + * !style_code(reset) - is called once for each row before any !style_code(set) or output functions are called. + * !style_code(execute) - is called once for each row just after all the !style_code(set) functions have been called, and just before the first output function (if any) are called. + * !style_code(table) - is called just after the constructor and before the first row is processed. It is passed a list of lists that contain all the cells of the table except for the very first row. The argument contains a list of rows, each row is a list of cells. This is the same format that is passed to the !style_code(doTable) method of the Table table. For the table above the argument would be: !-
        -!!style_code([[cash in wallet, credit card, pints of milk remaining, go to store?], [0, no, 0, no], [10, no, 0, yes], [0, yes, 0, yes], [10, yes, 0, yes], [0, no, 1, no], [10, no, 1, no], [0, yes, 1, no], [10, yes, 1, nope]]) + +There's not much more to it than that. + +!4 Well, yes there is. +But for that you should look at SymbolsInTables and ValueComparisons + +!4 Exceptions +When exceptions occur in a decision table, they're displayed inline. + +|should I buy milk | +|cash in wallet|credit card|pints of milk remaining|go tostore?| +|0 |yes |1 |no | +|0 |yes |one |no | + +|decision table all done wrong| +|foo |bar |baz? | +|- | |/ | +| |* | | + +!4 Documentation +If you want to document thedata givenin a particular row you can just add an extra cell to the right. + +|should I buy milk | +|cash in wallet|credit card|pints of milk remaining|go tostore? | +|0 |no |0 |no | +|10 |no |0 |yes|plenty of money but no need for a pint| + +For more detailed documentation you can add designated comment columns anywhere. Just prefix the header with a hash symbol. + + +|should I buy milk | +|cash in wallet|# comment |credit card|pints of milk remaining|go tostore?| +|-2 |we actually allow negative amounts, meaning debt|no |0 |no | +|1 |must have at least 2 euros |no |0 |no | diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DecisionTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DecisionTable/properties.xml new file mode 100644 index 0000000..634b002 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DecisionTable/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + +1237299094135 +-2949072239794021614 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DefineAlias/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DefineAlias/content.txt new file mode 100644 index 0000000..916c13b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DefineAlias/content.txt @@ -0,0 +1,120 @@ +The "Define Alias" table is designed to help you to segregate requirements from the implementation. + +Normally the table name must be a graceful name of the class name used in your implementation. + +This might not be convenient in some situations. + * your implementation is a generic framework, in this case it is unlikely that classnames match the business names + * your implementation needs technical configuration parameters which are not important to the business + + +Below is a dynamic decision table without any alias. This will be used in the following examples with alias definitions + +|ddt: add up change | +|# description |1c|5c|10c|25c|50c|$1|total cents?|$ total?| +|some simple addition|2 |2 |4 |0 |0 |0 |52 |0.52 | + + +!4 Use Case 1 +The business expects a different name "add change" than your class name "add up change" + +|Define alias | +|add change|add up change| + +|ddt: add change | +|# description |1c|5c|10c|25c|50c|$1|total cents?|$ total?| +|some simple addition|2 |2 |4 |0 |0 |1 |152 |1.52 | + +!4 Use Case 2 +The business expects a different name "add up" than your class name "add up change" +and in addition the test case is defined as decision table but you implemented it as dynamic decision table. +You can overwrite the table type and the name. + +|Define alias | +|add up|ddt: add up change| + +|dt: add up | +|# description |1c|5c|10c|25c|50c|$1|total cents?|$ total?| +|some simple addition|2 |2 |4 |0 |1 |0 |102 |1.02 | + +!4 Use Case 3 +The names are matching but you need to overwrite the table type. +Note that the DefineTableType table will not overwrite type definitions given in the test. + +|Define alias | +|add up change|ddt:| + +|dt: add up change | +|# description |1c|5c|10c|25c|50c|$1|total cents?|$ total?| +|some simple addition|2 |2 |4 |0 |0 |0 |52 |0.52 | + + +!4 Use Case 4 +The requirements have been written beforehand with a business name. +Your implementation requires that you prepare the test fixture in a script. + +|script |add up change| +|$myfixture=|get fixture | + +|Define alias | +|add money|$myfixture| + +|ddt: add money | +|# description |1c|5c|10c|25c|50c|$1|total cents?|$ total?| +|some simple addition|2 |2 |4 |4 |0 |1 |252 |2.52 | + +It doesn't matters if you define the alias before or after you create the fixture. +Again you can add a table type definition if required + +|Define alias | +|add more money|ddt: $anotherFixture| + +|script |add up change| +|$anotherFixture=|get fixture | + +|add more money | +|# description |1c|5c|10c|25c|50c|$1|total cents?|$ total?| +|some simple addition|2 |2 |4 |4 |0 |1 |252 |2.52 | + + +Another example with a constructor parameter + +!|script|test query|2| +|show |query | +|$tq= |get fixture | + +|Define alias | +|my query|query: $tq| + +|my query| +|n |2n | +|1 |2 | +|2 |4 | + +!|script|test query|3| +|show |query | +|$tq= |get fixture | + +|Define alias | +|my query|subset query: $tq| + +|my query| +|n |2n | +|2 |4 | +|3 |6 | + +!4 Use Case 5 +If you can't use an [[Import][ImportTable]] statement or you have import conflicts you can't resolve. +The alias can help you to get around these. + +|Define alias | +|what is in my pocket|ddt: fitnesse.slim.test.AddUpChange| + + +|what is in my pocket | +|# description |1c|5c|10c|25c|50c|$1|total cents?|$ total?| +|some simple addition|2 |2 |4 |4 |0 |1 |252 |2.52 | + +The alias fixture allows QA people to implement requirements by reusing existing framework functions and without writing new code. +Still your test pages are easy to read, especially for project managers, BA's and Product owners who might not understand how Fitnesse works. + +Hint: Try putting the "Define Alias" fixtures in the same place as your "Import" fixtures. The setup pages are a good place for these! diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DefineAlias/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DefineAlias/properties.xml new file mode 100644 index 0000000..55bd9cd --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DefineAlias/properties.xml @@ -0,0 +1,12 @@ + + +true +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DefineTableType/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DefineTableType/content.txt new file mode 100644 index 0000000..3af3e1c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DefineTableType/content.txt @@ -0,0 +1,16 @@ +|Define table type | +|Bowling | as Table | + +The "Define table type" table is designed to help you write more readable tests. + +In the above example we have defined Bowling as a Table fixture. Once you have defined the type like this you can just use "Bowling" in your test table and don't need to write "Table: Bowling". + +For example, the following table will now work: +|Bowling| +|3|5|4|/|X||X||3|4|6|/|7|2|3|4|9|-|4|/|3| +||8 ||28||51||68||75||92||101||108||117|||127| + +Using this fixture makes your test pages easier to read, especially for project managers, BA's and Product owners who might not understand how Fitnesse works. (The "table:" or "query:" strings are just a test implementation detail and therefore it is good to leave them out where ever possible.) + +Hint: Try putting the "Define Table Type" fixtures in the same place as your "Import" fixtures. The setup pages are a good place for these! + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DefineTableType/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DefineTableType/properties.xml new file mode 100644 index 0000000..3e87512 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DefineTableType/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DynamicDecisionTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DynamicDecisionTable/content.txt new file mode 100644 index 0000000..9607ff4 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DynamicDecisionTable/content.txt @@ -0,0 +1,50 @@ +| ddt: add up change | +| # description | 1c | 5c | 10c | 25c | 50c | $1 | total cents? | $ total? | +| some simple addition | 2 | 2 | 4 | 0 | 0 | 0 | 52 | 0.52 | +| save the total cents in a symbol | 56 | 0 | 0 | 0 | 1 | 20 | $totalCents= | 21.06 | +| now use the total cents that were stored | $totalCents | 0 | 0 | 0 | 0 | 10 | 3106 | ~=31.1 | An example for ValueComparisons | + +This is a dynamic decision table. The syntax is the same as that of a DecisionTable, except that the first cell has to be prefixed by ''ddt:'' or ''dynamic decision:''. + +The dynamic decision table provides an alternative to the DecisionTable when the GracefulNames of the column headers are not well suited as method names. + +The source code of the fixture !-AddUpChange-! looks like this:{{{ +public class AddUpChange { + private Integer totalCents = 0; + private static Map COIN_VALUES = new HashMap(); + static { + COIN_VALUES.put("1c", 1); + COIN_VALUES.put("5c", 5); + COIN_VALUES.put("10c", 10); + COIN_VALUES.put("25c", 25); + COIN_VALUES.put("50c", 50); + COIN_VALUES.put("$1", 100); + } + + public void reset() { + totalCents = 0; + } + + public void set(String coin, Integer amount) { + if (!COIN_VALUES.containsKey(coin)) { + throw new IllegalArgumentException("Unknown coin type " + coin); + } + totalCents += amount * COIN_VALUES.get(coin); + } + + public String get(String requestedValue) { + if ("$ total".equals(requestedValue)) { + return String.format(Locale.US, "%.2f", totalCents / 100.0); + } + return String.format("%d", totalCents); + } +} +}}} + +The cells with column headers that do not end with a ''?'' are considered inputs and they result in a method call !style_code(set(''header'', ''value'')). The cells with column headers that end with a ''?'' are considered outputs and they result in a method call !style_code(get(''header'')). + +Apart from that the same methods are called as for a DecisionTable (!style_code(table), !style_code(beginTable), !style_code(reset), !style_code(execute), !style_code(endTable)). + +As in a DecisionTable, all the !style_code(set) method calls are done before the !style_code(execute) call and all the !style_code(get) method calls are done after the !style_code(execute) call. + +You can use SymbolsInTables and ValueComparisons as well as comment column headers prefixed with ''#'' and use additional cells as comments. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DynamicDecisionTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DynamicDecisionTable/properties.xml new file mode 100644 index 0000000..28d2783 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/DynamicDecisionTable/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ExceptionHandling/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ExceptionHandling/content.txt new file mode 100644 index 0000000..2c6c16e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ExceptionHandling/content.txt @@ -0,0 +1,9 @@ +!2 Default Handling of exceptions. +The default way Slim handles exceptions is to indicate in the test table that an exception was thrown, and increment the exceptions count for the test. You will also find the full stack trace for the exception is listed at the top of the test. Slim will then try and continue on with the test. + +!2 Specifying a custom message +You can specify a custom message to be written into the test output instead of a stack trace. This is done by prefixing your message with {{{message:<<}}} and ending with {{{>>}}} For instance if you want the message to be "Can't create object" then the text for your exception should be {{{message:<>}}} +!2 Stopping the execution of the test. +If your exception indicates an error that cannot be recovered from, then you may want the test execution to stop at that point. You can do this by throwing an exception with "!-StopTest-!" in the class name. Teardown for the test will still be executed. If the test is part of a suite, then the next test in the suite to be be started afterwards. + +By throwing an exception with "!-StopSuite-!" in the class name you can stop both current test and the suite execution. Tear down procedure for the running test and the suite will still be executed, but all the consequent tests in the suite will not run. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ExceptionHandling/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ExceptionHandling/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ExceptionHandling/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/GracefulNames/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/GracefulNames/content.txt new file mode 100644 index 0000000..26cd59c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/GracefulNames/content.txt @@ -0,0 +1,8 @@ +The names of fixtures, methods, inputs, and outputs can be expressed in two forms. They can match their corresponding names in the fixture classes, or they can be ''graceful''. + +A ''graceful name'' looks like it is written in human language rather than computer language. It has spaces that separate the words and may have a period at the end. Slim will convert ''graceful names'' into the names of the classes and methods they refer to. So for example: + +!|Graceful Name|Fixture Name|Method Name| +|slim test|SlimTest|slimTest| +|login user.|LoginUser|loginUser| +|Open connection and add user.|OpenConnectionAndAddUser|openConnectionAndAddUser| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/GracefulNames/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/GracefulNames/properties.xml new file mode 100644 index 0000000..ff3943f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/GracefulNames/properties.xml @@ -0,0 +1,13 @@ + + + true + true + true + true + true + true + true + true + 1225639576805 + 7552149109911954771 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ImportTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ImportTable/content.txt new file mode 100644 index 0000000..8feffde --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ImportTable/content.txt @@ -0,0 +1,5 @@ +|Import| +|myPackage.subPackage.whatever| +|another.path.to.classes| + +The Import table tells the Slim Executor where the fixtures live. \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ImportTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ImportTable/properties.xml new file mode 100644 index 0000000..234dd18 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ImportTable/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + +1225490313404 +-3711766748557255495 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/InteractionAwareFixture/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/InteractionAwareFixture/content.txt new file mode 100644 index 0000000..18c2b9f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/InteractionAwareFixture/content.txt @@ -0,0 +1,26 @@ +!3 Interaction Aware Fixture + +The Java Slim server allows a fixture to 'intercept' all calls made to it by Slim. This allows a fixture to implement (generic) behavior without having to add it to all of its methods invoked by Slim. So a fixture can do pre- or postprocessing or exception handling in a single place, instead of adding it to each method to should have this behavior. + +Examples of such generic behavior: + * exception handling allowing exceptions from any of its methods to be converted to !-fitnesse.slim.SlimExceptions-! (without having to implement that in each method invoked), or + * waiting for the system under test to be in a stable state before invoking the next method (again without having to add that waiting to each method). + +Implementing this behavior is done by making a fixture implement 'fitnesse.slim.fixtureInteraction.InteractionAwareFixture', which has only a single method ('aroundSlimInvoke'). In the implementation of this method the fixture is free to perform extra work before or after invoking the method to be called, or even choosing to do something completely different than invoking the method Slim intended to have executed. For fixtures implementing this interface the Java Slim server will no longer invoke any other method than 'aroundSlimInvoke', the fixture is responsible to ensure the correct behavior is executed. +To allow the fixture to do that the arguments to 'aroundSlimInvoke' indicate which method would normally have been called, and with what arguments. Furthermore an addition arguments provides Slim's 'FixtureInteraction'. The 'interaction' is Slim's abstraction that would normally handle calling the actual method. The implementation of 'aroundSlimInvoke' can have the normal method be invoked by calling 'interaction.methodInvoke(method, this, arguments)'. + +A sample implementation of 'InteractionAwareFixture' from FitNesse's unit tests is contrived, but shows this mechanism being used to track which methods have been called on the fixture: +{{{ +public class TestSlimInvocationAware extends TestSlim implements InteractionAwareFixture { + private static final List METHODS = new ArrayList(); + + @Override + public Object aroundSlimInvoke(FixtureInteraction interaction, Method method, Object... arguments) throws Throwable { + METHODS.add(method.getName()); + return interaction.methodInvoke(method, this, arguments); + } +}}} + +In [[HSAC's fixtures][https://github.com/fhoeben/hsac-fitnesse-fixtures/wiki/2.-Slim-Fixtures]] this mechanism is used to show screen shots in the wiki whenever a method of !-BrowserTest-! throws an exception, and to wait for !-AngularJs'-! DOM manipulation to be complete before having !-NgBrowserTest-! interact with the Angular application. By implementing !-InteractionAwareFixture-! these features can be implemented in a single method, instead of having to be added to each and every public method of the fixtures. + +!note To add generic behavior to all method calls made by Slim (irrespective of the fixture) one can configure the 'interaction' used by Slim. This is done by specifying the '-i ' option on the Slim command line (for instance by using '!-!define slim.flags {-i your.package.YourOwnInteraction}-!' in the suite's root page). The class specified must implement 'fitnesse.slim.fixtureInteraction.FixtureInteraction' (for instance by extending 'fitnesse.slim.fixtureInteraction.DefaultInteraction'). This way one can not only control all methods being invoked but also how instances are obtained by Slim (which makes it possible to have them be wired up with dependency injection, instead of just being created by their default constructor). \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/InteractionAwareFixture/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/InteractionAwareFixture/properties.xml new file mode 100644 index 0000000..b6c417b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/InteractionAwareFixture/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/LibraryTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/LibraryTable/content.txt new file mode 100644 index 0000000..3367f80 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/LibraryTable/content.txt @@ -0,0 +1,44 @@ +A Library Table is a table that can be used to install support fixtures so they are available for all pages underneath. + +The format of the Library table is similar to the ImportTable. + +|Library | +|echo script| + +The first row contains the word '''Library'''. This is a reserved word so slim knows which table is executed. All subsequent rows are fixtures. In this case !-SliM-! will expect two fixtures: !-EchoSupport-! and !-FileSupport-!. These fixtures will be located the same as "normal" fixtures, meaning it will use the ImportTable's paths to scan. + +Whenever a method is called that is '''not''' available on the fixture, then all installed libraries are scanned if that method is available and if so that one will be invoked. + +Usage example: + +'''File cleanup'''. +{{{ +public class FileSupport { + public void delete(String folder) { + // do stuff here + } +} + +public class MyFixture { + public void doBusinessLogic(String folder) { + myFileCreatingService.createFileInFolder(..); + } +} +}}} + +|script|my fixture | +|check |do business logic |42 | +|note |The following invocation is triggered on the "echo script" library fixture| +|echo |Hello world | + + +'''Order of method execution''' + +The order of method execution is as follows: + +1. Find method on fixture, if present execute +2. Find method on SystemUnderTest, if present execute +3. Find method on installed Library in '''reversed''' order of creation. So last one created takes precedence over the ones created earlier. + +If you need to initialise the fixture you want to add to the library or your fixture has constructor parameters than this is possible as well. +See details on [[How To Add Fixtures With Parameters To The Library][.FitNesse.SuiteAcceptanceTests.SuiteSlimTests.LibrarySuite.HowToAddFixturesWithParametersToTheLibrary]] diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/LibraryTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/LibraryTable/properties.xml new file mode 100644 index 0000000..266fef9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/LibraryTable/properties.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/OrderedQueryTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/OrderedQueryTable/content.txt new file mode 100644 index 0000000..7c493b2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/OrderedQueryTable/content.txt @@ -0,0 +1,12 @@ +|Ordered query:employees hired before|10-Dec-1980 | +|employee number |first name|last name|hire date | +|8832 |James |Grenning |12-May-1999| +|1429 |Bob |Martin |10-Oct-1975| +|9924 |Bill |Mitchell |19-Dec-1966| + + +The first thing to notice is the ''Ordered query:'' in the first cell of the table. This tells the Slim table processor that this is an ordered query table. Ordered query tables are almost identical to [[Query tables][QueryTable]] except that order is important. The order of the rows in the table must be the same as the order of the rows returned by the query. + +The matching algorithm is ''relative'' which means that if the table rows have the following order !style_code({A, B, C}) and the query returns !style_code({B, C, A}) then rows !style_code(B) and !style_code(C) will be green, and only row !style_code[A] will be marked in red as ''out of order: row 3''. The row number in the error message is the ordinal position (based on 1) of that row in the query result. + +A little thought should convince you that this means that the first row in the ''table'' can never be out of order. \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/OrderedQueryTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/OrderedQueryTable/properties.xml new file mode 100644 index 0000000..e6155a8 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/OrderedQueryTable/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + 1236196201462 + 1130887675001640928 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/QueryTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/QueryTable/content.txt new file mode 100644 index 0000000..fc6cf52 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/QueryTable/content.txt @@ -0,0 +1,67 @@ +The rows in a query table represent the expected results of a query. +You can specify them precisely if you like as in the following: + +| Query:employees hired before | 10-Dec-1980 | +| company number | employee number | first name | last name | hire date | +| 4808147 | 9942 | Bill | Mitchell | 19-Dec-1966 | +| 4808147 | 1429 | Bob | Martin | 10-Oct-1975 | + +Or you can leave cells blank and allow them to be filled in: + +| Query:employees hired before | 10-Dec-1980 | +| employee number | first name | last name | hire date | +| 1429 | | | | +| 8832 | | | | + +The code for the fixture is:{{{package fitnesse.slim.test; + +import java.util.Date; +import java.util.List; + +import static java.util.Arrays.asList; + +public class EmployeesHiredBefore { + + public EmployeesHiredBefore(Date date) { + } + + public void table(List> table) { + // optional function + } + + public List>> query() { + + return + asList( // table level + asList( // row level + asList("company number", "4808147"), // cell column name, value + asList("employee number", "1429"), + asList("first name", "Bob"), + asList("last name", "Martin"), + asList("hire date", "10-Oct-1974") + ), + asList( + asList("company number", "5123122"), + asList("employee number", "8832"), + asList("first name", "James"), + asList("last name", "Grenning"), + asList("hire date", "15-Dec-1979") + ) + ); + } +} +}}} +Note the ''list'' function simply builds an !-ArrayList-! from it's arguments. It's in the !-ListUtility-! class + +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. + +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. + +In analogy to decision tables you can define comment columns by prefixing the header with the hash symbol. + +| Query:employees hired before | 10-Dec-1980 | +| last name | hire date | # comment | +| Grenning | | | +| Martin | | we hired him first | diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/QueryTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/QueryTable/properties.xml new file mode 100644 index 0000000..af11eaa --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/QueryTable/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + +1234379903398 +6607618891543149048 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ScenarioTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ScenarioTable/content.txt new file mode 100644 index 0000000..b60460f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ScenarioTable/content.txt @@ -0,0 +1,146 @@ +!include -c .FitNesse.SuiteAcceptanceTests.SetUp +---- +A Scenario table is a table that can be called from other tables; namely ScriptTable and DecisionTable. + +The format of a Scenario table is the same as the format of a ScriptTable, but with a few differences. You can see a Scenario table in action [[here][.FitNesse.SuiteAcceptanceTests.SuiteWidgetTests.SimpleWidgets]]. + +!4 Declaring Scenarios using ''Interposed'' style +The basic format looks like this: + +!| scenario | widget | wikiText | renders | htmlText | +| create page | WidgetPage | with content | @wikiText | +| check | request page | WidgetPage | 200 | +| ensure | content matches | @htmlText | +| show | content | + +!***> No Peeking + +| script | page driver | + +*! +The first word in the table is ''Scenario''. Following that is the signature of the scenario. This signature is a lot like a function declaration. The name of the scenario in the table above is ''!-WidgetRenders-!'', and it takes two arguments: ''wikiText'' and ''htmlText''. Notice how this looks a lot like a function call in a ScriptTable. The name is composed of every other table cell appropriately camel-cased. The arguments are the interposed cells, also appropriately camel-cased. Scenario names will be camel-cased with a leading upper-case letter. Arguments will be camel-cased with a leading ''lower-case'' letter. + +!4 Declaring Scenarios using ''Parameterized'' style. +You can also declare a scenario by embedding underscores within a string. Each underscore represents an argument. The arguments are named in a comma separated list in the following cell. + +!| scenario | widget _ renders _ | wikiText,htmlText | +| create page | WidgetPage | with content | @wikiText | +| check | request page | WidgetPage | 200 | +| ensure | content matches | @htmlText | +| show | content | + +The body of the scenario uses the arguments by prefixing them with an '@' sign. The token that follows the '@' ''must be the camel-cased name of the argument.'' Arguments that share a common root string can use optional braces to force the correct evaluation of the full name of the argument. Thus, if you have arguments ''job'' and ''job code'', you can use @{jobCode} to make sure you get the argument with the longer name. + +!4 Invoking a scenario from a DecisionTable +!| widget renders | +| wiki text | html text | +| this is ''italic'' text | this is italic text | italic widget | +| this is '''bold''' text | this is bold text | bold widget | + +Notice that the name of the decision table, once camel-cased, will be ''!-WidgetRenders-!''. Since this is the name of the above scenario, the scenario will be called rather than a fixture. This is important! Remember that if a scenario is on your page, or included into your page, then its name will override any fixture that has the same name. Scenarios come first! + +If you'd rather you can reference the scenario with parameters so long as you make sure the argument names in the reference exactly match the argument names in the declaration. For example the above test could have been written as: + +!| widget | wiki text | renders | html text | +| wiki text | html text | +| this is ''italic'' text | this is italic text | italic widget | +| this is '''bold''' text | this is bold text | bold widget | + +The column headers of the DecisionTable are named for the arguments of the scenario (again, once properly camel-cased). The scenario processor simply replaces the arguments in the scenario with the contents of the table cells below the corresponding header. + +If you hit the test button, you will see the scenario operate. It's pretty self-explanatory. If you look at the resulting DecisionTable you'll see that an extra column has been added to each row. That column contains a collapsed section with the entire scenario table with all the arguments replaced. You can expand it by clicking on the litte arrow. Try it. + +!5 Output parameters +You can also use ''output parameters'' with scenarios. These are basically symbols you assign in the scenario that you can then refer to in the decision table by creating a column whose name ends on '?'. This allows you to capture values in your scenario, making the symbols filled explicit and allowing different comparisons (for instance equality, greater than, etc) in different rows. + +!| scenario | widget _ renders _ code _ | wikiText,htmlText,responseCode? | +| create page | WidgetPage | with content | @wikiText | +| $responseCode= | request page | WidgetPage | +| ensure | content matches | @htmlText | +| show | content | + +!| widget renders code | +| wiki text | html text | response code? | +| this is ''italic'' text | this is italic text | 200 | +| this is '''bold''' text | this is bold text | > 100 | + +!5 Constructor parameters +When all rows in a decision table need to set the same value for some parameters these can be specified using ‘’constructor parameters’’, instead of repeating them for each row. This can make the decision tables more readable. In the example below the input variables "wiki text" and “html text” are given on the table construction line and not repeated in each row. + +!| widget renders code | given | wiki text | this is ''italic'' text | html text | this is italic text | +| response code? | +| 200 | +| > 100 | + +The Syntax is - Scenario Name - !-[given|having]-! - 1. Variable Name - 1. Variable Value - 2. Variable Name - 2. Variable Value - .... + +To ensure backward compatibility constructor parameters are first checked if they are part of a scenario name. + +If a senario is found it will be used and no constructor values are passed. Only if no such scenario is found the constructor parameters can be used. + +!4 Invoking a scenario from a script table using ''Interposed'' style +!| Script | +| widget | !3 hello | renders |

        hello

        | + +Notice how the scenario is called exactly the way a function is called. Remember though that scenarios do not have return values. So you can't call a scenario from within a 'check' or 'show' row in a script table. Also keep in mind that scenario names come first, so a scenario will override a function in the current fixture. + +By the way, what fixture was being used here? If you look inside the ''No Peeking'' section above, you'll see where I started the fixture. What's neat about this is that you can start any fixture you like, so long as it has appropriately named functions. So the scenario and script calls are ''polymorphic'' with respect to the fixture. (Let the reader understand and beware!) + +!4 Invoking a scenario using ''Parameterized'' style +!| Script | +| widget !3 hello renders

        hello

        | + +As you can see you can also drop the table cells and simply write the scenario name and arguments on a single line without any separators. The scenario with the ''most'' arguments that matches the statement will be selected. So given two scenarios: !style_code(widget _ renders _) and !style_code(widget _), both match the statement !style_code(widget foo renders bar), but the first will be invoked because it has more arguments than the second. + +!4 A complex example +It's even possible to have multiple arguments at the end of the scenario declaration. Nested scenario's can be called similarly, with a semi-colon after the "method" name: + +| scenario | show values _ | a,b,c | +| note | a = @a | +| note | b = @b | +| note | c = @c | + +| scenario | execute this _ | a,b,c | +| show values; | @a | @b | @c | + +Called from decision table: + +| execute this | +| a | b | c | +| 1 | 2 | 2 | + +!4 Nested Scenarios +Scenarios can also be nested! If you hit the test button, you'll see scenarios executing within other scenarios. + +!| scenario | make page | page name | with | wikiText | +| create page | @pageName | with content | @wikiText | +| check | request page | @pageName | 200 | + +!| scenario | page | wiki text | renders | html text | +| make page | MyPage | with | @wikiText | +| ensure | content matches | @htmlText | +| show | content | + +!| Script | +| page | !3 hello | renders |

        hello

        | + +!4 A note on parameter matching +Note that the replacement of parameters is based on straightforward text matching. In the following example the outcome may look a bit weird, but the algorithm has been kept as simple as possible: + +!| scenario | make misleading page _ with content _ | page, pageContent | +| create page | @page | with content | @pageContent | +| check | request page | @page | 200 | + +!| Script | +| make misleading page | PageName | with content | some content | +| reject | content matches | some content | + +In this example, the ''@page'' tokens are replaced with the page name, hence ''@pageContent'' becomes ''!-PageNameContent-!'' (''@page'' is replaced, ''-Content'' remains). + +!4 Philosophy +There are no ''if'' or ''while'' statements within scenarios. They are macros, not programs. They are constructed via text substitution. Their purpose is to help you eliminate redundancy in your tests. + +!4 Scenario Libraries +See + + + + + + + + + + +1238174209178 +1483156031156832784 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ScriptTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ScriptTable/content.txt new file mode 100644 index 0000000..1ec7886 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ScriptTable/content.txt @@ -0,0 +1,71 @@ +| script | login dialog driver | Bob | xyzzy | +| login with username | Bob | and password | xyzzy | +| check | login message | Bob logged in. | +| reject | login with username | Bob | and password | bad password | +| check | login message | Bob not logged in. | +| check not | login message | Bob logged in. | +| ensure | login with username | Bob | and password | xyzzy | +| note | this is a comment | +| show | number of login attempts | +| $symbol= | login message | + +The fixture for this table is:{{{public class LoginDialogDriver { + private String userName; + private String password; + private String message; + private int loginAttempts; + + public LoginDialogDriver(String userName, String password) { + this.userName = userName; + this.password = password; + } + + public boolean loginWithUsernameAndPassword(String userName, String password) { + loginAttempts++; + boolean result = this.userName.equals(userName) && this.password.equals(password); + if (result) + message = String.format("%s logged in.", this.userName); + else + message = String.format("%s not logged in.", this.userName); + return result; + } + + public String loginMessage() { + return message; + } + + public int numberOfLoginAttempts() { + return loginAttempts; + } +} }}} + +This should be pretty clear. Each row is a single instruction in the script. + +The first row is simply the word "Script" followed by the name and constructor arguments of the fixture (known as the "actor") that will be used by the rest of the table. If there is no actor specified then the previous script table's actor on this test page will be used. + +The first cell could also have been +|Script:login dialog driver | Bob | xyzzy | + +Most instructions involve some kind of function call. By default, the name of the function is assembled from tokens in ''every other'' cell. The arguments of the function are the intervening cells. Appending ";" to the end of a function name in a cell invokes sequential argument processing, which means that the arguments to the function are all subsequent cells. + +''Interposing Function Call (Default)'' + +-| comment | +| login with username | Bob | and password | xyzzy | + +''Sequential Argument Processing Function Call'' + +-| comment | +| login with username and password; | Bob | xyzzy | + + * A function alone in a row will turn !style_red(red) or !style_green(green) if it returns a boolean. Otherwise it will simply remain uncolored. + * If [[a symbol assignment][SymbolsInTables]] is in the first cell, then it should be followed by a function. The symbol is assigned the value returned by that function. + * If the word '''''check''''' is in the first cell of a row, then a function call follows it. The last cell of the table is the expression we expect to be matched by what the function actually returns. + * If the word '''''check not''''' is in the first cell of a row, then a function call follows it. The last cell of the table is the expression we expect ''not'' to be matched by what the function actually returns. + * If the word '''''ensure''''' is in the first cell, then it should be followed by a function that should return a boolean ''true'' for !style_green(green) and ''false'' for !style_red(red). + * If the word '''''reject''''' is in the first cell, then it should be followed by a function that should return a boolean ''false'' for !style_green(green) and ''true'' for !style_red(red). + * If the word '''''note''''' is in the first cell, all other cells in that row will be ignored. + * Or if the first cell is blank. + * Or if the first cell begins with # or *. + * If the word '''''show''''' is in the first cell, then it should be followed by a function. A new cell will be added when the test is run, and it will contain the return value of the function. + * If the word '''''start''''' appears in the first cell, then the rest of the row is the name and constructor arguments for a new actor, which replaces the existing actor. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ScriptTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ScriptTable/properties.xml new file mode 100644 index 0000000..38cfd14 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ScriptTable/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + 1232649253653 + -7576501324773113274 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SetUp/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SetUp/content.txt new file mode 100644 index 0000000..1534049 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SetUp/content.txt @@ -0,0 +1,6 @@ +!*> setup +|import| +|fitnesse.slim.test| +|fitnesse.fixtures| + +*! diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SetUp/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SetUp/properties.xml new file mode 100644 index 0000000..b4bc972 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SetUp/properties.xml @@ -0,0 +1,13 @@ + + + true + true + true + true + true + true + true + true + 1231691120894 + 2877052885879097211 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SlimProtocol/PortManagement/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SlimProtocol/PortManagement/content.txt new file mode 100644 index 0000000..be794ab --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SlimProtocol/PortManagement/content.txt @@ -0,0 +1,3 @@ +The !-SlimServer-! opens and listens to a server socket. It gets the port number from !-FitNesse-! via the command line. The default is 8085 and it cycles through the next 10 ports to avoid collisions. If 8085 is not convenient for you, you can set the !style_code(SLIM_PORT) variable to any port you like. This variable can be defined on a page by page basis with !-!define-!, or it can be specified with !style_code(-DSLIM_PORT=xxxx) on the !style_code(java) command line, or it can be an environment variable. +if the port number configured is 0 then !-FitNesse-! will identify a free port with the help of the operating system. +if the port number configured is 1 (default from Slim ''[0.5]'' onwards) than no port is openend and !-StdIn and StdOut-! is used for the communication. \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SlimProtocol/PortManagement/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SlimProtocol/PortManagement/properties.xml new file mode 100644 index 0000000..c1d9bc1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SlimProtocol/PortManagement/properties.xml @@ -0,0 +1,13 @@ + + + true + true + true + true + true + true + true + true + 1237228442617 + -1593763266452230916 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SlimProtocol/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SlimProtocol/content.txt new file mode 100644 index 0000000..4b2a7bc --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SlimProtocol/content.txt @@ -0,0 +1,156 @@ +!2 The Slim Protocol, version 0.5 + +!-FitNesse-! communicates with the Slim Server via !-StdIn and StdOut-! (''[0.5]'' default) or via a socket (see >PortManagement). When you hit the ''Test'' button, !-FitNesse-! starts up a !-SlimServer-! process by issuing the appropriate command line. !-FitNesse-! then sends a list of instructions to the !-SlimServer-!, and expects a list of responses back. The instructions are things like ''call function f(a,b,c)'' or ''make instance of class X with arguments p,q,r''. The responses are simply the values that are returned by the instructions. + +{{{ + instruction list + +----------+ o---> +------------+ +----------+ +-----+ + | FitNesse |---[socket]-->| SlimServer |----->| Fixtures |------>| SUT | + +----------+ <---o +------------+ +----------+ +-----+ + response list +}}} + +Each instruction in the list is itself a list of strings. Here is a typical instruction list:{{{ + [ + [id_0, make, instance, fixture, argument], + [id_1, call, instance, f, 3], + ]}}}The first instruction in this list tells the !-SlimServer-! to create an instance of a class named ''fixture'' using the constructor argument ''argument'', and register the newly created instance under the name ''instance''. The next instruction causes the function ''f'' to be called on the instance ''instance'', passing the value ''3''. The first column in each instruction is simply an instruction id. + +The response to this instruction list might look like this:{{{ + [ + [id_0, OK], + [id_1, 9] + ] +}}}Again, each element of the response list is itself a list of strings. The first string in each response is the id of the instruction being responded to. The second is the response value. In this case the construction in instruction ''id_0'' was successful, and the call to function ''f'' with value ''3'' in instruction ''id_1'' returned a ''9''. + +That's pretty much it. Lists of instructions go out. Lists of responses come back. Typically the instructions for an entire test page will be sent in one large list, yielding one large response list. + +There is no type information in the instructions. Each instruction is a list of strings. Each response is a list of strings. Strings and lists are the only two types in the entire protocol. It is up to the !-SlimExecutor-! to find the functions and constructors that match the instructions, and to do the necessary type conversion. + +!3 The Data +The !-SlimServer-! maintains five pieces of data that are operated on by the instructions that it processes. + + * A list of class search path items. + * A dictionary of created objects. Each object is addressed by an instance name string. + * A dictionary of symbol values. Each symbol value is addressed by a symbol name string. + * ''[0.1]'' '''Library Instances:''' A stack of library objects. + * ''[0.3]'' '''Actors:''' A stack of actor objects. + +!3 The Instructions +There are five instructions in the Slim protocol. import, make, call, callAndAssign, and ''[0.4]'' assign. That's all. + +!4 Import +['''', import, ''''] + +This instruction causes the to be added to the list of class search path items. In java gets added to the ''CLASSPATH''. In ''.NET'', the is a namespace. You can send as many imports as you like. The Slim system will use all imported paths to find fixture classes. This instruction returns ''OK''. + +!4 Make +['''', make, '''', '''', ''...''] + +This instruction causes slim to search for a class named '''' using the list of class search path items. '''' can also be fully qualified. If found slim looks for a constructor with the right number of arguments. If found, the '''' strings are converted to the appropriate types, and the constructor is called. The newly created instance is added to the dictionary of created objects with the name '''', and the instruction returns ''OK''. + +''[0.1]'' '''Library Instances:''' If a ''make'' instruction creates an object with an instance name that begins with !style_code(library) then that instance is pushed on the stack of library objects. These objects endure for the entire duration of the !-SlimServer-! execution. + +''[0.2]'' '''Fixture Chaining:''' Symbols can be used in the ''Make'' command to represent a class name. If the '''' argument of the ''Make'' command contains '$' characters, then Slim should replace any symbols that have been created by previous ''callAndAssign'' commands. This allows !-FitNesse-! to compose fixture names from symbols set by fixtures, and therefore enables fixture chaining. + +''[0.3]'' '''Symbol Copy:''' If '''' consists entirely of a single symbol name prefixed with $, and the item from the dictionary of symbol values with the symbol name is not a string, then the item is added to the dictionary of created objects with the name ''''. The '''' strings are ignored and no constructor is called. + +!4 Call +['''', call,'''','''',''...''] + +This instruction causes slim to find a function named '''' in the class of the object from the dictionary of created objects with the name ''''. The function must have the same number of arguments as the instruction. If found, each argument in the instruction is converted to the appropriate type, and then the function is called on the instance. The '''' strings may contain symbols (see below) which will be substituted before the type conversion is done. If the function returns a value, it is converted to a string and returned. Otherwise the instruction returns the string: ''/__VOID__/''. + +''[0.1]'' '''System Under Test:''' Each fixture may have a way to declare a particular object to be the ''System Under Test''. In java this is done with the @SystemUnderTest attribute. In !-RubySlim-! the object is accessed using the ''sut'' method. In .NET, the fixture implements the !-DomainAdapter-! interface. Whatever mechanism is used, if a the method specified by a ''Call'' or ''!-CallAndAssign-!'' is not found on the specified instance, then if there is a ''System Under Test'' object specified, and the method exists on that object, then it will be called. + +''[0.1]'' '''Library Instances:''' If a method specified by a ''Call'' or ''!-CallAndAssign-!'' is not found on either the specified instance, or on the ''System Under Test'' then the stack of library objects is searched, starting at the top (latest). If the method is found, it is called. + +''[0.3]'' '''Symbol As Object:''' If an '''' consists entirely of a single symbol name prefixed with $, then the item from the dictionary of symbol values with the symbol name is used directly as an argument in the function call. + +!4 !-CallAndAssign-! +['''', callAndAssign, '''', '''', '''', ''...''] + +This instruction is identical to ''call'' except that the return value is saved in the dictionary of symbol values with the name ''''. Symbol names may only contain letters. + +!4 ''[0.4]'' !-Assign-! +['''', assign, '''', ''''] + +This instruction is used to set symbols on the SUT. The '''' is saved in the dictionary of symbol values with the name ''''. This instruction returns ''OK''. + +!3 Symbols +That last one was probably puzzling. Symbol values are strings or objects (or null values) that are kept in a dictionary. The ''callAndAssign'' instruction is the only thing that can create a symbol. Symbols are used in in the '''' strings of the ''make'', ''call'', and ''callAndAssign'' instructions. If one of those '''' strings contains a $ followed by a symbol name (as in $V), and if the symbol has been assigned, then that string will be replaced by the value of the symbol. What this means is that the !-FitNesse-! side can tell Slim to remember a value in a symbol, and then to use that value later. + +''[0.3]'' '''Symbol As Object:''' If the symbol is replaced within a string context, it will be converted to a string. If only the $ followed by a symbol name is given and an object is stored for that symbol, then the object will be used. + +!3 Actors +''[0.3]'' The stack of library objects should be initialized with an instance of a class with the following 3 methods: + + * getFixture(): returns the object from the dictionary of created objects named "scriptTableActor". Throws an exception if no object exists. + * pushFixture(): pushes the object from the dictionary of created objects named "scriptTableActor" on to the stack of actor objects. Throws an exception if no object exists. + * popFixture(): pops an object from the stack of actor objects and adds it to the dictionary of created objects with the name "scriptTableActor". Throws an exception if the stack is empty. + +To support symbol assignments in Decision Tables which are implemented with a Scenario function is required in a Library: + + * cloneSymbol + +!3 Strings and Lists +As we will see, slim views a list as a special kind of string. Therefore functions can take and return lists as well as strings. The lists must be lists of strings, but since a list is a special kind of string, lists of lists of lists of ... are possible. The Slim executor will convert back and forth between these forms as needed. + +A string is encoded as six or more digits followed by a colon, followed by the characters of the string. The six+ digits are the number of characters in the string, not including the digits themselves. Thus, the empty string is "000000:". This length encoding scheme is used in other places so we'll use the token '''' to mean six digits followed by a colon. + +If a string is '''', then the four character string ''null'' will replace it. + +A list is encoded as a string that begins with a '[', followed by a '''' specifying the number of items in the list. This is followed by that many strings, each terminated by a colon, and then finally a ']' Thus, this list: ''[hello,world]'' is encoded as the following string:{{{000035:[000002:000005:hello:000005:world:]}}}Take careful note of all the colons and counts. Colons are terminators not separators. + +As you can see, each item of a list is a string. But since a string can encode a list, each item of a list can be another list. So we can have very deep recursive definitions. + +''[0.4]'' For versions older than 0.4, the length part of an encoded string was exactly six digits. For version 0.4 the size can grow beyond 6 digits for really long messages. + +!3 Slim Server +So when you send a list of instructions, what you are really sending is a string. When you receive a list of responses, what you are really receiving is a string. So the high level protocol of Slim is just strings. It looks like this: + + 1 !-FitNesse-! invokes the Slim Server via a command line. One of the command line arguments is the port number of the socket to listen on. If the port number is 1 than the communication happens via !-StdIn and Stdout-!. For any other port number the !-Slim Server-! opens that socket and start listening. !-FitNesse-! connects to that socket. + 1 Slim Server responds to the connect request with the string "Slim !----! ''V''\n", where '''' is the version number of the slim ''protocol''. If this protocol ever changes, ''that'' version number will change. This is the only string that is ever sent without the '''' encoding. It is terminated by the '''\n''' instead. Every other message that slim sends will be prefixed by a '''' in ''!style_red(bytes)'', followed by a colon. !style_red(NOTE:) Every other length in this document is in UTF-8 ''characters''. This one length is in bytes. + 1 !-FitNesse-! sends a list of instructions encoded as a string of course. + 1 Slim Server sends a list of responses similarly encoded. + 1 3 and 4 repeat until !-FitNesse-! sends a ''bye'' directive. This is simply the string ''bye'' properly encoded with ''''. e.g. "000003:bye". + 1 Slim Server shuts down. + +!3 !-StdOut and StdErr-! from the SUT +Everything written to !-StdOut and StdErr-! by the SUT is added by !-FitNesse-! to the Execution Log and stored with the test results. + +''[0.5]'' In case the port number is 1 the communication is happening via !-StdIn and StdOut-!. As !-StdOut-! is in use for testing everything written to !-StdOut-! by the SUT is tunneled via !-StdErr-! + * the Slim Server is prefixing every line from !-StdOut-! with "SOUT :". In case a single message spans multiple lines all following lines will be prefixed with "SOUT.:". + * the Slim Server is prefixing every line from !-StdErr-! with "SERR :". In case a single message spans multiple lines all following lines will be prefixed with "SERR.:". + * both types of messages are then send via !-StdErr-! + * !-FitNesse-! splits incoming text again into stdout and stderr and adds it to the appropriate section in the Execution Log + * The above prefixes are never visible for the !-FitNesse-! user + * if !-FitNesse-! receives text without such a prefix it adds the text as it is to the stdout section from the Execution Log + +!3 Exceptions +Sometimes a function or a constructor will throw an exception in response to a ''make'', ''call'', or ''callAndAssign'' instruction. When this happens, the response value for that instruction will be: "__EXCEPTION__:''''". The '''' ought to be a stack trace or some other relevant debugging information. If you want a nice yellow message to appear in one of the SLIM tables, then somewhere in the ''<>'' put ''message:<<'' in front of the message and ''>>'' after it. e.g. !style_code(message:<>) + +!4 Standard exception messages +There are some standard exception messages that every Slim implementation should create. + +| COULD_NOT_INVOKE_CONSTRUCTOR '''' | Where '''' is the name of the class whose constructor cannot be invoked. | +| NO_METHOD_IN_CLASS '''' '''' | Where '''' is the name of the missing method. | +| NO_CONSTRUCTOR '''' | Where '''' is the name of the class that is missing the constructor. | +| NO_CONVERTER_FOR_ARGUMENT_NUMBER '''' | Where '''' is the class that has no corresponding converter. | +| NO_INSTANCE '''' | Where '''' is the name of the missing instance. | +| NO_CLASS '''' | Where '''' is the class that could not be found. | +| MALFORMED_INSTRUCTION [''instruction list''] | Where ''instruction list'' is a comma separated list of the instruction strings. | +| TIMED_OUT '''' | The instruction timed out after '''' seconds. To enforce timeouts, set the ''-s xx'' flag (via the ''slim.flags'' variable) | + +!4 Aborting a Test +If a fixture throws an exception with a ''class'' name that contains "!style_code(!-StopTest-!)", then Slim should stop executing the instructions in the current batch, and return immediately. The response for this type of exception should be "!style_code(__EXCEPTION__:ABORT_SLIM_TEST:)" which may have an optional suffix of: "!style_code(message:<<''reason''>>)". + +To abort the test suite (stop execution directly), throw an exception with a class name that contains "!style_code(!-StopSuite-!)". The syntax is identical to !-StopTest-!. + +!3 Type Conversions +The only types in the instructions and responses are lists and strings, and since the leaves of the lists must eventually be strings, all we really have to worry about are strings. But we don't want to restrict our fixtures to use only Strings. So Slim comes with some standard type converters that allow fixtures to take more convenient data types. + +!see DataTypes. +''[0.1]'' '''Hashes:''' !style_note(Optional) If one of the method arguments int a ''Make'', ''Call'', or ''!-CallAndAssign-!'' matches the "hash" format, then it should be converted into a dictionary, or a hash, or some convenient form for the fixture authors. In Java they are converted into Maps. In Ruby they are converted into Hashes. Other languages may use other structures. The "hash" format is the format produced by the [[Hash Widget][
        ...
        namevalue
        ). + +!3 Conclusion +That's pretty much it. If you want to port Slim to a new platform, I suggest you look at the code in the fitnesse.slim package. Pay special attention to the !-ListSerializer-! and !-ListDeserializer-! classes. Also check out the logic in Statement and !-StatementExecutor-! classes. The unit tests ought to be expecially educational. You should be able to build equivalent unit tests without much fuss. Finally, take a look at the unit tests in fitnesse.responders.run.slimResponder. These should all still run with your new port (although you'll have to replace the command line that invokes the Slim Server). diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SlimProtocol/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SlimProtocol/properties.xml new file mode 100644 index 0000000..a16a90f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SlimProtocol/properties.xml @@ -0,0 +1,11 @@ + + +true +true +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SubsetQueryTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SubsetQueryTable/content.txt new file mode 100644 index 0000000..6693c03 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SubsetQueryTable/content.txt @@ -0,0 +1,7 @@ +|Subset Query:employees hired before|10-Dec-1980 | +|employee number |first name|last name|hire date | +|1429 |Bob |Martin |10-Oct-1974| + +The first thing to notice is the ''Subset Query:'' in the first cell of the table. This tells the Slim table processor that this is a subset query table. Subset query tables are almost identical to [[Query tables][QueryTable]] except that we only need to put those rows into the table that we want to make sure to exist in the query response. + +Our definition of subset here is not ''proper'' subset. Thus the table may contain all the rows of the query response. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SubsetQueryTable/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SubsetQueryTable/properties.xml new file mode 100644 index 0000000..afb3ad1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SubsetQueryTable/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SymbolsInTables/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SymbolsInTables/content.txt new file mode 100644 index 0000000..4497d7b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SymbolsInTables/content.txt @@ -0,0 +1,20 @@ +|DT:some decision table| +|input |output? | +|3 |$V= | +|$V |8 | +|9 |$V | + + +If a $'''' appears in an output cell (whether in a Decision Table, Script Table, or any other kind of table that can call functions) then that symbol will be loaded with that output. Both the slim server running in the SUT and !-FitNesse-! will remember that symbol. + +The first row above loads the return value of the ''output'' function into the symbol ''V''. The second row will load the previously stored value of ''V'' into the input. (If you think about this in the context of the SlimProtocol you'll realize that this means that the symbol must be stored on the SUT). The third row compares the output with the previously stored value of the symbol. + +You can combine symbols as follows: + +|$V and $X are symbols| + +The symbols V and X will be replaced with their values... + +!3 Read also: + +.FitNesse.SuiteAcceptanceTests.SuiteSlimTests.SlimSymbols \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SymbolsInTables/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SymbolsInTables/properties.xml new file mode 100644 index 0000000..ea84b78 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SymbolsInTables/properties.xml @@ -0,0 +1,14 @@ + + +true +true +six42 +true +true +true +true +true +true +1238174405669 +-5189210762337118063 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SystemUnderTest/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SystemUnderTest/content.txt new file mode 100644 index 0000000..844293e --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SystemUnderTest/content.txt @@ -0,0 +1,51 @@ +!3 System Under Test + +'''Currently only available in Java''' + +!-Using SystemUnderTest allows you to let SliM directly invoke a method on your SystemUnderTest without having to create a method in a SliM fixture for it.-! + +!4 Example +{{{ +import fitnesse.slim.SystemUnderTest; + +/** + * The slim fixture. + */ +public class SlimDriver { + + // field MUST be declared PUBLIC + @SystemUnderTest + public Service service = new Service(); + + public void init() { + Database.clean(); + } + +} + +/** + * The service under test. + */ +public class Service { + + public void createPerson(String name) { + Database.persist(new Person("name")); + } + + public boolean exists(String name) { + return Database.get(name) != null; + } + +} + +}}} + +With the !-@SystemUnderTest-! annotation you can now say: + +!|script|SlimDriver| +|init| +|create person|Ben Vonk| +|ensure|exists|Ben Vonk| + +When a method that should be invoked on the !-SliM-! fixture is missing, it will try to invoke that method on a '''public''' field annotated with !-SystemUnderTest-!. + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SystemUnderTest/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SystemUnderTest/properties.xml new file mode 100644 index 0000000..4d71476 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/SystemUnderTest/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/TableTable/ReportTables/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/TableTable/ReportTables/content.txt new file mode 100644 index 0000000..c4b30c5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/TableTable/ReportTables/content.txt @@ -0,0 +1,16 @@ +!3 Generating reports inside pages using Table tables. + +Since you can pass back any size result to a Table table, and since you can create a Table table that has only one row, you can generate reports. + +For example: + +|table:counts| + +This table will execute the !style_code(doTable) method of the !style_code(counts) fixture. If that method returns a table like this:{{{[ + [report:Employees,pass:22], + [report:Managers,fail:21] +]}}} then the resulting table will be + +|!style_pass(table:counts)| +|Employees|!style_pass(22)| +|Managers|!style_fail(21)| diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/TableTable/ReportTables/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/TableTable/ReportTables/properties.xml new file mode 100644 index 0000000..80c237b --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/TableTable/ReportTables/properties.xml @@ -0,0 +1,13 @@ + + + true + true + true + true + true + true + true + true + 1232732180225 + -4574603253238332954 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/TableTable/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/TableTable/content.txt new file mode 100644 index 0000000..60d2948 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/TableTable/content.txt @@ -0,0 +1,128 @@ +|Table:Bowling| +|3|5|4|/|X||X||3|4|6|/|7|2|3|4|9|-|4|/|3| +||8 ||28||51||68||75||92||101||108||117|||130| + +The "Table" table allows you to write a fixture that accepts an arbitrary table, and returns a table of results. The table of results has a similar geometry to the input table (without the first row). Each cell of the result table can be one of the following codes: + +|Comment| +|''pass'' |The original contents will be colored green.| +|''pass:'' |The original contents will be replaced with '''' and colored green.| +|''fail'' |The original contents will be colored red.| +|''fail:'' |The original contents will be replaced with '''' and colored red.| +|''ignore'' |The original contents will be colored grey.| +|''ignore:''|The original contents will be replaced with '''' and colored grey.| +|''report:''|The original contents will be replaced with ''''.| +|'''' or ''no change''|The corresponding cell will be unchanged| +|''error:'' |''/!\ '' will be appended to the original contents and colored yellow.| +|'''' |The original contents will be replaced with '''' and colored red.| + +The fixture is written with a !style_code(doTable) method. This method takes a List argument and returns a List. The incomming list is a list of rows. Each row is a list of strings. The returned list has a similar structure except that it does not have the first row. If any row of the returned list is longer than the corresponding row of the incomming list, then the extra columns will be added to the colored table. If there are extra rows, then they will be added too. So the returned table can be larger, horizontally and vertically. It cannot be smaller! + +See [[Report Tables][>ReportTables]] to see how to use the different geometries to create reports. + +Here is the fixture for the above table.{{{ +package fitnesse.slim.test; + +import static fitnesse.util.ListUtility.*; + +import java.util.List; + +public class Bowling { + public List doTable(List> table) { + Game g = new Game(); + List rollResults = list("","","","","","","","","","","","","","","","","","","","",""); + List scoreResults = list("","","","","","","","","","","","","","","","","","","","",""); + rollBalls(table, g); + evaluateScores(g, table.get(1), scoreResults); + return list(rollResults, scoreResults); + } + + private void evaluateScores(Game g, List scoreRow, List scoreResults) { + for (int frame=0; frame<10; frame++) { + int actualScore = g.score(frame+1); + int expectedScore = Integer.parseInt(scoreRow.get(frameCoordinate(frame))); + if (expectedScore == actualScore) + scoreResults.set(frameCoordinate(frame), "pass"); + else + scoreResults.set(frameCoordinate(frame), String.format("Was:%d, expected:%s.", actualScore, expectedScore)); + } + } + + private int frameCoordinate(int frame) { + return frame < 9 ? frame*2+1 : frame*2+2; + } + + private void rollBalls(List> table, Game g) { + List rollRow = table.get(0); + for (int frame = 0; frame < 10; frame++) { + String firstRoll = rollRow.get(frame * 2); + String secondRoll = rollRow.get(frame * 2 + 1); + if (firstRoll.equalsIgnoreCase("X")) + g.roll(10); + else { + int firstRollInt = 0; + if (firstRoll.equals("-")) + g.roll(0); + else { + firstRollInt = Integer.parseInt(firstRoll); + g.roll(firstRollInt); + } + if (secondRoll.equals("/")) + g.roll(10 - firstRollInt); + else if (secondRoll.equals("-")) + g.roll(0); + else + g.roll(Integer.parseInt(secondRoll)); + } + } + } + + private class Game { + int rolls[] = new int[21]; + int currentRoll = 0; + + public void roll(int pins) { + rolls[currentRoll++] = pins; + } + + public int score(int frame) { + int score = 0; + int firstBall = 0; + for (int f=0; f + + + + + + + + + + + + + 1232732770570 + 6617471917833325753 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ValueComparisons/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ValueComparisons/content.txt new file mode 100644 index 0000000..a0f2e94 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ValueComparisons/content.txt @@ -0,0 +1,25 @@ +!3 Numerical Comparisons +You can use relational comparisons for the numeric values in your table cells. + +|DT:Some Decision Table| +|input|output?| +|3|<5| +|5|>=3| +|8|3<_<9| + +You can use all the normal operators: <, >, <=, >=, !=. + +The ''~='' relational operator means ''approximately equal''. It applies to floating point numbers. So if ''~=3.0'' then the ''3.0'' sets the precision so that 2.95 or 3.049 will both show equality. It is the number of decimals on the right side of the operator that determines the precision. + +So 2.5~=3 but 2.5 is not ~= 3.0. + +!3 Regular Expression Comparisons +You can match regular expressions by using the syntax =~/''regex''/. For example: + +|check|echo|Bob|=~/Bob/| +|check|echo|My name is Bob."|=~/B.b/| + +The regular expression syntax is the '''Java''' standard. + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ValueComparisons/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ValueComparisons/properties.xml new file mode 100644 index 0000000..5ba6e89 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/ValueComparisons/properties.xml @@ -0,0 +1,13 @@ + + + true + true + true + true + true + true + true + true + 1225294538423 + 4620953944571182425 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/content.txt new file mode 100644 index 0000000..b915ad9 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/content.txt @@ -0,0 +1,67 @@ +!define TEST_SYSTEM {slim} +!2 The ''SLIM'' Test System +Slim (Simple List Invocation Method) is an alternative to Fit. Rather than running all the HTML processing, comparisons, and colorizing in the System Under Test (SUT), Slim keeps all that behavior on in FitNesse. What executes in the SUT is a very tiny kernel that implements the [[''Slim Protocol''][>SlimProtocol]]. This protocol is a bare bones RPC system that allows FitNesse to call functions in the SUT. + +This strategy has a number of advantages: + + * The Slim protocol is very easy to port. Getting new platforms to use SLIM is a matter of a few hours of work. + * All the features are on the FitNesse side, so test tables remain consistent regardless of the platform of the SUT. + * Since HTML is not an intrinsic part of SLIM, new test syntaxes can be explored. + +!3 Using the SLIM Test System +If you want a test page to be run under SLIM, you simply set the TEST_SYSTEM variable to "slim" instead of "fit". + +{{{&bang;define TEST_SYSTEM {slim} }}}If this variable is set on your page, (as it is on this page!) or on any parent page, then your page will be run with Slim. That's all there is to it. + +!3 The Slim Tables +The first cell of a slim table tells you what kind of table it is. Here are the table types so far: + +| [[Decision Table][>DecisionTable]] | Supplies the inputs and outputs for decisions. This is similar to the Fit Column Fixture | +| [[Baseline Decision Table][.FitNesse.SuiteAcceptanceTests.SuiteSlimTests.BaseLineDecisionTable]]|Almost identical to a >DecisionTable but more readable for very big tables with many columns as only the changed values from one line to the baseline must be specified. The fixture implementation is identical to >DecisionTable.| +| [[Dynamic Decision Table][>DynamicDecisionTable]] |Has the same syntax as a >DecisionTable, but differs in the fixture implementation. It passes the column headers as parameters to the fixture. | +| [[Hybrid Decision Table][.FitNesse.SuiteAcceptanceTests.SuiteSlimTests.HybridDecisionTable]] |Combines the advantages in the fixture implementation of a Decision and a Dynamic Decision Table. Also supported by a [[Baseline Decision Table][.FitNesse.SuiteAcceptanceTests.SuiteSlimTests.BaseLineDecisionTable]] | +| [[Query Table][>QueryTable]] | Supplies the expected results of a query. This is similar to the Fit Row Fixture | +| [[Subset Query Table][>SubsetQueryTable]] | Supplies a subset of the expected results of a query. | +| [[Ordered query Table][>OrderedQueryTable]] | Supplies the expected results of a query. The rows are expected to be in order. This is similar to the Fit Row Fixture | +| [[Script Table][>ScriptTable]] | A series of actions and checks. Similar to Do Fixture. | +| [[Table Table][>TableTable]] | Whatever you want it to be! | +| [[Import][>ImportTable]] | Add a path to the fixture search path. | +| [[Comment][>CommentTable]] | A table that does nothing. | +| [[Scenario Table][>ScenarioTable]] | A table that can be called from other tables. | +| [[Library Table][>LibraryTable]] | A table that installs fixtures available for all test pages | +| [[Define Table Type][>DefineTableType]] | A helper table that defines the default table type for named fixtures. | +| [[Define Alias][>DefineAlias]] | A helper table that defines alias names for fixtures. | + +!4 Data Types. +The data in your tables is all Strings. However your fixtures don't want to be constrained to Strings. So Slim comes with several standard data type converters that will automatically convert the strings in the tables into the data types expected by your fixtures. + +!see >DataTypes +You can also create your own custom type converters if you like. + +!see >CustomTypes +Content returned from the SUT will be escaped by default, so your fixture can return a piece of output without the need to transform it to HTML compatible output. On the other hand, if you're returning HTML content (e.g. a ..
        ), FitNesse will try to detect that (based on a valid HTML start and end tag) and will render the HTML in-line. + +!4 Configure SLIM +The Slim test system can be configured using the following properties: + +| slim.port | 8085 | Base port for SLIM. | +| slim.pool.size | 10 | The size of the pool of ports to cycle through. By default the ports 8085 up to 8095 are used (''slim.port'' + ''slim.pool.size''). | +| slim.host | localhost | The host the SLIM server will be running on. This is mostly useful if you're running a remote SLIM server. | +| slim.flags | | Extra flags to provide to the SLIM server. Arguments supported by the slim service are: !- +-![-v] [-i interactionClass] [-s statementTimeout] [-d] [-ssl parameterClass] | +| slim.timeout | 10 seconds | Connection timeout starting and finishing a test run. | +| slim.debug.timeout | ''slim.timeout'' | Same as ''slim.timeout'', used when the debug property is set (falls back to ''slim.timeout''). | +| manually.start.test.runner.on.debug | false | Do not launch a SLIM server if the test is ran in debug mode. | + +Those properties can be either provided by a wiki page, on the command line (e.g. ''-Dslim.port=9000'') or in the plugins.properties file. + +!4 Extra Goodies that are consistent throughout all Slim tables and ports. +| [[''Exception Handling''][>ExceptionHandling]] | +| [[''Symbols in tables''][>SymbolsInTables]] | +| [[''Constructor arguments''][>ConstructorArguments]] | +| [[''Value comparisons''][>ValueComparisons]] | +| [[''Graceful names''][>GracefulNames]] | + +!4 Java goodies +| [[''System Under Test''][>SystemUnderTest]] | +| [[''Interaction Aware Fixture''][>InteractionAwareFixture]] | diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/properties.xml new file mode 100644 index 0000000..44e3645 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SliM/properties.xml @@ -0,0 +1,10 @@ + + + + + + + +1236195430393 +-797601756276826570 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SpecialPages/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SpecialPages/content.txt new file mode 100644 index 0000000..21e150a --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SpecialPages/content.txt @@ -0,0 +1,44 @@ +The following pages are automatically included into other pages. Some are included at the stop, others are included at the bottom. Some may be included only into certain kinds of pages. However, they all follow one identical rule. A given page will be included only if it is a brother or uncle of the target page. + +Consider !-PageHeader-!. !-PageHeader-! is included at the top of all of it's sibling pages. If !-FitNesse-! did not have sub pages, this would make perfect sense. The page named !-PageHeader-! would simply be included into every other page. But !-FitNesse-! ''does'' have sub pages. So the rule is that if a page includes !-PageHeader-! then the children of that page will include it as well. This rule is recursive, so the childrens +children also include !-PageHeader-! etc. + +Now imagine that you have a hierarchy that looks like this: + * Bob + * !-PageHeader-! + * Angela + * Alexis + +Bob is at the top level and there is no !-PageHeader-! at the top level. So nothing is included into Bob. +Angela has a sibling page named !-PageHeader-! so !-Bob.PageHeader-! is included into Angela. And since Angela includes it, the children of Angela will include it too. So Alexis will also include !-Bob.PageHeader-!. + +Clear? Just remember brothers and uncles. + + +!3 !-PageHeader-! +Included at the top of a page. Often used for common titles, or links. + +!3 !-PageFooter-! +Included at the bottom of a page. Used for copyrights, footers, and common links. + +!3 !-SetUp-! +Included at the top of test pages only. Used to initialize the test and supply Import tables. + +!3 !-TearDown-! +Included at the bottom of test pages only. Used to decommission resources used in a test. + +!3 !-SuiteSetUp-! +Included at the top of a test page and before !-SetUp-!. When a suite is run, this page will only be included once at the top of the suite. + +!3 !-SuiteTearDown-! +Included at the bottom of a test page only, and after !-TearDown-!. When a suite is run this page will be included only once at the end of the suite. + +!3 !-ScenarioLibrary-! +These pages are intended for scenario tables. They are included just after the !-SetUp-! in any ''SLIM'' test. Unlike the other special pages, ''all'' brother and uncle !-ScenarioLibrary-! pages are included. The oldest (grandest uncle) is included first. The brother, if it exists, is included last. This allows younger !-ScenarioLibrary-! pages to override older ones. + +!3 !-TemplateLibrary-! +These pages act as a marker to find templates to show as available for insertion when editing a page. All children of a !-TemplateLibrary-! will be shown in the drop-down list of templates available for insertion. Unlike the other special pages, ''all'' brother and uncle !-TemplateLibrary-! pages are included. The oldest (grandest uncle) is included first. The brother, if it exists, is included last. This allows younger !-TemplateLibrary-! pages to override older ones. + + +!3 Suites. +A special word about suites. The !-SuiteSetUp-! and !-SuiteTearDown-! that are included in a suite run are the pages that are the nearest brothers or uncles of the ''Suite'' page. If the suite has a deep hierarchy, and there are !-SuiteSetUp-! and/or !-SuiteTearDown-! pages below the suite page, they will not be included. \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SpecialPages/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SpecialPages/properties.xml new file mode 100644 index 0000000..759bf43 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/SpecialPages/properties.xml @@ -0,0 +1,11 @@ + + + +Some pages in FitNesse that serve special purposes. + + + + +1238171723779 +5784148408046429312 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestHistory/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestHistory/content.txt new file mode 100644 index 0000000..2dc03b2 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestHistory/content.txt @@ -0,0 +1,24 @@ +Every time you run a test or a suite, the results are recorded in the ''test history database''. You can view the history by clicking on the !style_code(Test History) button. The reports are pretty self-explanatory. + +When you click on !style_code(Test History) you will be shown the directory of all tests and suites that are in thie ''test history database''. This directory also shows you the status of the last 20 results from each test or suite. You can click on the name of the test or suite to get a detailed ''page history'', or you can click on any of the individual status elements to see the particular test result. + +The detailed ''page history'' shows you a directory of all the test results for that test or suite. The bar chart shows how how the number of tests (for suites) or assertions (for tests) has grown over time, and the pass/fail ratio. Clicking on an entry takes you to that specific test result. + +!4 Details +The ''test history database'' is kept in !style_code(!-FitNesseRoot/files/testResults-!). Beneath this directory there is a subdirectory for each test or suite. These directories contain the ''page history'' and are named for the page that contains the test or suite. Beneath the page history directory is a file for each test result. + +The test result files are named using the following scheme !style_code(YYYYMMDDHHMMSS_R_W_I_E.xml) where YYYYMMDDHHMMSS is the date and time of the test run, and R, W, I, and E are integers representing the number of Right, Wrong, Ignored, and Exception counts for the test or suite. For tests they are assertion counts. For suites they are test counts. (Example: !style_code(20090513134259_12_20_4_2.xml)) + +The test files contain the XML that describes the test run. The format of this XML is identical to the XML packet returned by the format=xml flag when you run a test. (See 7 days'', or ''>30 days''. If you want to purge a different number of days, you can use the RESTful URL form. (See [[!-RestfulServices-!][ + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/CrossReferenceSuites/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/CrossReferenceSuites/content.txt new file mode 100644 index 0000000..d1a20e5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/CrossReferenceSuites/content.txt @@ -0,0 +1,11 @@ +!3 Suite Cross References +Sometimes you want to compose a test suite from test pages that are in many different modules, subsystems, or features. For example you might want a test suite that lists all the test pages for the current iteration, or you might want a test suite that lists all the currently passing tests, or you may want to create a test suite for all the quickly executing tests, and another for all the slow tests. + +To do this you can use the [['''!-!see-!'''][ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/SubWikiSuites/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/SubWikiSuites/content.txt new file mode 100644 index 0000000..2faaae6 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/SubWikiSuites/content.txt @@ -0,0 +1,22 @@ +!3 [[!-SubWiki-!][ + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/SuiteQuery/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/SuiteQuery/content.txt new file mode 100644 index 0000000..8969982 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/SuiteQuery/content.txt @@ -0,0 +1,22 @@ +A Suite Query is a regular page with the ''Suite'' property set so that it has a ''Suite'' button. On that page are one or more tables that specify the query. The page you are looking at right now, is a suite query. Notice the two tables below. They specify the query. You can run the query (and the tests) by hitting the ''Suite'' button. + +!|Suite| +|Page|FitNesse.SuiteAcceptanceTests| +|Content|[Bb]ug| + +!|Suite| +|Page|FitNesse.SuiteAcceptanceTests| +|Title|Import| + +Each of these tables is called a ''Suite Specification''. A ''Suite Specification'' is always a table whose first cell is the word ''Suite'', capitalized as shown. The other rows must each have two cells, and the first cell in each row must be either ''Page'', ''Content'' or ''Title''. + * ''Page'' - The second cell in the ''Page'' row is the fully qualified page name that forms the root of the search. The search will proceed only with descendants of this page. + * ''Title'' - The second cell in the ''Title'' row specifies a regular expression to be used to match a page name. Every page in the search whose name matches that regular expression will be included in the suite. + * ''Content'' - The second cell in the ''Content'' row specifies a regular expression to be used to match the contents of a page. Every page in the search whose content contains a string that matches that regular expression will be included in the suite. + +Every ''Suite Specification'' table represents the ''Intersection'' of the ''Page'', ''Title'', and ''Content''. Thus, they form an ''AND'' operation. Only those pages that are descended from ''Page'' and match ''Title'' and match ''Content'' will be in the suite. Of course, if either ''Title'' or ''Content'' are omitted (as above) then they are ignored. + +If you have multiple ''Suite Specification'' tables, then the suite will be the ''disjuction'' (The logical OR) of all of them. + +!note The regular expressions conform to the Java library. + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/SuiteQuery/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/SuiteQuery/properties.xml new file mode 100644 index 0000000..7387ef7 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/SuiteQuery/properties.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/SuiteSetUpAndSuiteTearDown/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/SuiteSetUpAndSuiteTearDown/content.txt new file mode 100644 index 0000000..ab85778 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/SuiteSetUpAndSuiteTearDown/content.txt @@ -0,0 +1,6 @@ +!3 !-SetUp-! and !-TearDown-! +Sometimes you will need to delete a test database at the end of each test in a suite, or create an empty database at the beginning of each test. Operations like this can be performed by writing special fixtures that perform these functions in their constructors. These fixtures can then be invoked in the '''!-SetUp-!''' and '''!-TearDown-!''' pages of the suite. See + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/TagsAndFilters/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/TagsAndFilters/content.txt new file mode 100644 index 0000000..e927fad --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/TagsAndFilters/content.txt @@ -0,0 +1,33 @@ +!3 Suite Tags + +The properties page offers a field labeled ''Tags'' where you can enter a comma-separated list of keywords. These keywords can then be used as targets for searching and executing those tests. + +!3 Searching for tags +If you hit the !style_code(Search) button, You will see a form that allows you to search for pages that certain attributes or tags. For example, you can search for all subpages that have the !style_code(Suite) property set, or all pages that are read-only, or that have the !style_code(Edit) button displayed. Most importantly, you can search for pages marked with tags. + +If you put a comma separated list of tags into the !style_code(Tags) input box, and then search, you will be shows a list of pages that are marked with any of those tags. Notice that if the pages are tests or suites, they have a link next to them that allows you to execute them. Also, look at the bottom and see the useful text that can be copied and pasted onto other pages in order to repeat the search or test the resulting pages. + +Using these tools, you can easily tag some tests as "smoke" tests, or "critical", or "fast". You can find all the "smoke" tests and run them, etc. + +!3 Using tags to select which tests to run. +The easiest way to execute tagged tests is to search for the tags as described in the previous section. Sometimes, though, you'd like to execute the tests via a RESTful service, or from the command line (see [[!-ControllingFitNesseFromTheCommandLine-!][:<port>/<suite path and test name>?responder=suite&runTestsMatchingAnyTag=smoke,critical-!) + +''This parameter used to be !style_code(suiteFilter). Both versions are supported and both versions run a test if any one tag matches for a page.'' + +It is also possible to run test that match all of the tags in your filter. This is done with the !style_code(runTestsMatchingAllTags) parameter, like so: +!style_code(!-http://<host>:<port>/<suite path and test name>?responder=suite&runTestsMatchingAllTags=smoke,critical-!) + +If you want to execute all the tests in a suite except those with a particular tag (eg !-NotRunningOnHudson-!) then you use the !style_code(excludeSuiteFilter) query parameter: For example: +!style_code(!-http://<host>:<port>/<suite path and test name>?responder=suite&excludeSuiteFilter=NotRunningOnHudson-!) + +''There is no AND type behavior on excludeSuiteFilter. Any test that matches any of the listed tags will be skipped.'' + +Typically, you will need only a few of such filtered suites, so it is suggested to build a link on the front page or so which contains the respective suite filter parameters. (If you simply click on the ''Suites'' button to run a suite, the !-suiteFilter-! is not set, so all tests in the respective subwiki are run.) + +!3 Executing test starting with a certain test. +Sometimes half the suite will run okay, but after a point all tests will start failing. In that case you can save time re-running the tests by stating which test you would like to start with. For instance: +!style_code(!-http://<host>:<port>/<suite path and test name>?responder=suite&startTest=TestTwo-!) will run all tests coming after !-TestTwo-! + +Remember, that the order tests run is alphabetical. So in the above example, !-TestThree-! will not run because !-TestTwo-! actually comes after !-TestThree-! \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/TagsAndFilters/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/TagsAndFilters/properties.xml new file mode 100644 index 0000000..1c7ce60 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/TagsAndFilters/properties.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/content.txt new file mode 100644 index 0000000..7f3c44c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSuites/content.txt @@ -0,0 +1,13 @@ +!1 Suites of Tests +A suite is a collection of test pages that can all be run together, and whose results are then collected for you on a single results page, and in TestHistory. For an example of a Suite of tests, see .FitNesse.SuiteAcceptanceTests. + +!3 Setting up a '''Suite''' page. +To create a Suite page you set the "Suite" property of that page (see [[Page Properties][ + + + + + + +1238174950604 +-8493028553090165617 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSystems/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSystems/content.txt new file mode 100644 index 0000000..4fb03c1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSystems/content.txt @@ -0,0 +1,7 @@ +!1 FitNesse Test Systems. +!img http://files/fitnesse/images/fitnesse_architecture.jpg +This diagram shows how !-FitNesse-! works with the two Test Systems, [[Slim][SliM]], and [[Fit][FitFramework]]. + +[[FIT][FitFramework]] is the older of the two, and uses HTML. The HTML parsing is done on the SUT just prior to the fixtures being called. This means that there is a lot of code on the SUT. Over the years many different ports of FIT have been attempted, but because FIT is large, and because programmers always have better ideas the second and third time they implement something, the various FIT ports are quite inconsistent. This means that tests written on one platform won't work on another. + +[[Slim][SliM]] is newer. As the diagram shows, there is very little code on the SUT. This is because all the table processing is done inside FitNesse, within the Slim runners. The Slim Executor and the fixtures are the only code that lives on the SUT. The Slim Executor is very small and easy to port. The Test pages are broken down into simple instructions by the Slim Runners. Those instructions are passed to the Slim Executor which directs the fixtures to call the SUT. This means that new features added to Slim Runners will not require changes on the Slim Executor, and that all test pages written for a Slim Runner will work on any different Slim platform. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSystems/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSystems/properties.xml new file mode 100644 index 0000000..264e700 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/TestSystems/properties.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + +1238175009151 +-6940628553317529561 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/VariableScope/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/VariableScope/content.txt new file mode 100644 index 0000000..70ec9b5 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/VariableScope/content.txt @@ -0,0 +1,7 @@ +Variable are in scope if they are defined on the page in question or in somewhere in the parent hierarchy of the page in question. + +For example, lets say the variable we are interested in is X. + + * If X is defined on this page then it is definately in scope. + * If X is not defined on this page but is defined in the page .FitNesse (this page's parent), then X is still in scope. + * If X is defined on .FitNesse.UserGuide.FitNesseWiki then X is not in scope because .FitNesse.UserGuide.FitNesseWiki is not a parent of this page. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/VariableScope/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/VariableScope/properties.xml new file mode 100644 index 0000000..2eca34f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/VariableScope/properties.xml @@ -0,0 +1,10 @@ + + + + + + + + +1050694178427 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/content.txt new file mode 100644 index 0000000..d24cc1c --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/content.txt @@ -0,0 +1,93 @@ +In this section you can read about the >TestSystems FitNesse provides out-of-the-box: + * [[Fit][>FitFramework]] + * [[Slim][>SliM]] + +Organize tests: + * >TestSuites + * >SpecialPages + * >TestHistory + * >AcceptanceTestPatterns + +Implement the tests: + * >FixtureCode + * >ClassPath + * >VariableScope + +Running tests: + * >RunningAcceptanceTests + * >RunningFromJunit + * >RunningFromMaven + * >CustomizingTestExecution + +If it does not work directly: + * >AttentionMessagesInTestResults + * >DebuggingFitNesseTables + * >DebuggingFixtureCode + +Odds and ends: + * >RestfulTests + +Pages can be marked as [[''Test'' pages][TestSystems. In this section you'll learn about creating test tables, linking those to your application code and receiving feedback from you >TestSuites. + +Each page that has tests will consist of a series of HTML tables. Fitnesse understands various formats of tables, and if those formats are not sufficient, developers are welcome to add additional ones. Generally, the tables take the basic form of a Command cell and some Parameter cells, which are followed by some Output cells. When a test is run, the command and parameters are evaluated to see if the correct output is given. [[The Two minute example][FixtureCode. If you want to learn what the different styles of test tables are and how to apply them, check out >TestSystems and their table types. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/properties.xml new file mode 100644 index 0000000..97920a3 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/WritingAcceptanceTests/properties.xml @@ -0,0 +1,11 @@ + + + + + + + + +1125002094317 +1381714279921804562 + diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/content.txt b/fitnesse/FitNesseRoot/FitNesse/UserGuide/content.txt new file mode 100644 index 0000000..bf35103 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/content.txt @@ -0,0 +1,44 @@ +!***< variables + +!define REGRACE_LINK {true} +*! +!1 !c FitNesse User Guide +!c Robert C. Martin, +!c Micah D. Martin, +!c Patrick Wilson-Welsh & +!c FitNesse contributors +---- +!3 Table of Contents + * [[Introduction][#introduction]] + * [[Working with the FitNesse wiki][>FitNesseWiki]] + * [[Writing Acceptance Tests][>WritingAcceptanceTests]] (jump directly to [[Fit][>WritingAcceptanceTests.FitFramework]] or [[Slim][>WritingAcceptanceTests.SliM]]) + * [[Administering FitNesse][>AdministeringFitNesse]] + * [[Plugins][.PlugIns]] + * [[Quick Reference Guide][>QuickReferenceGuide]] + * [[Full Reference Guide][AcceptanceTests]]), you can create a common understanding among the team (coders and non-coders). This helps tremendously in [[delivering the right system][>DeliveringTheRightSystem]]. Specifications can be written in wiki syntax or in a rich text editor, so no knowledge of the wiki syntax is required. + +Because the specifications can actually be executed, FitNesse provides a method to demonstrate even to non-coders that the application works as designed. This can prevent problems leading to [[Project Death by Requirements][>ProjectDeathByRequirements]]. The goal is for FitNesse to operate at a level just ''below'' the user interface level, demonstrating that, given various inputs to your application, the correct results are computed. In a sense, you could consider it an alternative user interface for the application. + +Convinced? Have a more in-depth look at how FitNesse works in our [[Two Minute Example][>TwoMinuteExample]]. [[Download and install][http://fitnesse.org/FitNesseDownload]] FitNesse on your machine, if you haven't done so already. Then learn how to [[work with the FitNesse wiki][>FitNesseWiki]] and [[write Acceptance Tests][>WritingAcceptanceTests]]. + +!3 Brief history +FitNesse started as an HTML and [[wiki][http://wiki.org/wiki.cgi?WhatIsWiki]] "front-end" to [[FIT][http://fit.c2.com/]] ("Framework for Integrated Testing") back in 2001. + +!*** 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. + +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. + +*! +Interestingly both the wiki and Fit were developed by Ward Cunningham, and you can read about them both on Ward's [[c2 wiki][http://fit.c2.com/]]. + +Nowadays FitNesse is a comprehensive tool, supports multiple test systems, and has been used for many software and even hardware projects. diff --git a/fitnesse/FitNesseRoot/FitNesse/UserGuide/properties.xml b/fitnesse/FitNesseRoot/FitNesse/UserGuide/properties.xml new file mode 100644 index 0000000..d30aa8f --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/UserGuide/properties.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/fitnesse/FitNesseRoot/FitNesse/content.txt b/fitnesse/FitNesseRoot/FitNesse/content.txt new file mode 100644 index 0000000..225c455 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/content.txt @@ -0,0 +1,6 @@ +!1 FitNesse + +Below this page you can find all the content provided as part of the FitNesse distribution. + +!contents -g +!path lib/*.jar diff --git a/fitnesse/FitNesseRoot/FitNesse/properties.xml b/fitnesse/FitNesseRoot/FitNesse/properties.xml new file mode 100644 index 0000000..b20b511 --- /dev/null +++ b/fitnesse/FitNesseRoot/FitNesse/properties.xml @@ -0,0 +1,7 @@ + + + +true + + + diff --git a/fitnesse/FitNesseRoot/FrontPage/content.txt b/fitnesse/FitNesseRoot/FrontPage/content.txt new file mode 100644 index 0000000..1a26019 --- /dev/null +++ b/fitnesse/FitNesseRoot/FrontPage/content.txt @@ -0,0 +1,14 @@ +!1 Welcome to [[FitNesse][FitNesse.FitNesse]]! +!3 ''The fully integrated stand-alone acceptance testing framework and wiki.'' +# Here is a good place to add your first page (WikiWord). For example, MyTopLevelApplicationPage +LispInterpreter + +To add your first "page", click the [[Edit][.FrontPage?edit]] button and add a [[!-WikiWord-!][.FitNesse.UserGuide.FitNesseWiki.WikiWord]] to the page. + +|'''To Learn More...''' | +|[[User Guide][.FitNesse.UserGuide]] |''Answer the rest of your questions here.''| +|[[A Two-Minute Example][.FitNesse.UserGuide.TwoMinuteExample]]|''A brief example. Read this one next.'' | +|[[Acceptance Tests][.FitNesse.SuiteAcceptanceTests]] |''FitNesse's suite of Acceptance Tests'' | +|[[Release Notes][.FitNesse.ReleaseNotes]] |''Find out about FitNesse's new features'' | + +!note Release ${FITNESSE_VERSION} diff --git a/fitnesse/FitNesseRoot/FrontPage/properties.xml b/fitnesse/FitNesseRoot/FrontPage/properties.xml new file mode 100644 index 0000000..c0a08e1 --- /dev/null +++ b/fitnesse/FitNesseRoot/FrontPage/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/LispInterpreter.wiki b/fitnesse/FitNesseRoot/LispInterpreter.wiki new file mode 100644 index 0000000..d4e3c34 --- /dev/null +++ b/fitnesse/FitNesseRoot/LispInterpreter.wiki @@ -0,0 +1,7 @@ +--- +Suite +--- +!1 Test suite for the Lisp Interpreter +!contents -R2 -g -p -f -h +!define TEST_SYSTEM {slim} +!path ../build/classes/ diff --git a/fitnesse/FitNesseRoot/LispInterpreter/SetUp.wiki b/fitnesse/FitNesseRoot/LispInterpreter/SetUp.wiki new file mode 100644 index 0000000..bb35658 --- /dev/null +++ b/fitnesse/FitNesseRoot/LispInterpreter/SetUp.wiki @@ -0,0 +1,5 @@ +--- +Test +--- +| import | +| fixture | diff --git a/fitnesse/FitNesseRoot/LispInterpreter/TestOne.wiki b/fitnesse/FitNesseRoot/LispInterpreter/TestOne.wiki new file mode 100644 index 0000000..64c834d --- /dev/null +++ b/fitnesse/FitNesseRoot/LispInterpreter/TestOne.wiki @@ -0,0 +1,9 @@ +| script | lisp interpreter fixture | +| input | (defun adderx (x) (lambda (y) (+ x y))) | +| discard output | +| input | (setf adder20 (adderx 20)) | +| discard output | +| input | (funcall adder20 2) | +| check | output |!-22 + +-!| \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/PageFooter/content.txt b/fitnesse/FitNesseRoot/PageFooter/content.txt new file mode 100644 index 0000000..ad4b359 --- /dev/null +++ b/fitnesse/FitNesseRoot/PageFooter/content.txt @@ -0,0 +1 @@ +[[Front Page][.FrontPage]] | [[User Guide][.FitNesse.UserGuide]] | [[root][root]] (for global !-!path's-!, ''etc.'') | Press '?' for keyboard shortcuts | [[Plugins][.PlugIns]] | [[Contact][http://fitnesse.org/StayInformed]] | [[(edit)][.PageFooter?edit]] diff --git a/fitnesse/FitNesseRoot/PageFooter/properties.xml b/fitnesse/FitNesseRoot/PageFooter/properties.xml new file mode 100644 index 0000000..826da42 --- /dev/null +++ b/fitnesse/FitNesseRoot/PageFooter/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + 1238490732869 + -5498758380075500221 + diff --git a/fitnesse/FitNesseRoot/PageHeader/content.txt b/fitnesse/FitNesseRoot/PageHeader/content.txt new file mode 100644 index 0000000..67e7037 --- /dev/null +++ b/fitnesse/FitNesseRoot/PageHeader/content.txt @@ -0,0 +1 @@ +#page header \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/PageHeader/properties.xml b/fitnesse/FitNesseRoot/PageHeader/properties.xml new file mode 100644 index 0000000..6a30bb3 --- /dev/null +++ b/fitnesse/FitNesseRoot/PageHeader/properties.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/fitnesse/FitNesseRoot/RecentChanges.wiki b/fitnesse/FitNesseRoot/RecentChanges.wiki new file mode 100644 index 0000000..f90d1a8 --- /dev/null +++ b/fitnesse/FitNesseRoot/RecentChanges.wiki @@ -0,0 +1,4 @@ +|LispInterpreter.SuiteSetUp||14:27:52 Wed, Feb 22, 2017| +|LispInterpreter.TestOne||14:27:42 Wed, Feb 22, 2017| +|LispInterpreter||14:24:41 Wed, Feb 22, 2017| +|FrontPage||14:15:03 Wed, Feb 22, 2017| diff --git a/fitnesse/FitNesseRoot/TemplateLibrary/StaticPage/content.txt b/fitnesse/FitNesseRoot/TemplateLibrary/StaticPage/content.txt new file mode 100644 index 0000000..990fb6f --- /dev/null +++ b/fitnesse/FitNesseRoot/TemplateLibrary/StaticPage/content.txt @@ -0,0 +1 @@ +!contents -R2 -g -p -f -h \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/TemplateLibrary/StaticPage/properties.xml b/fitnesse/FitNesseRoot/TemplateLibrary/StaticPage/properties.xml new file mode 100644 index 0000000..72aa2b6 --- /dev/null +++ b/fitnesse/FitNesseRoot/TemplateLibrary/StaticPage/properties.xml @@ -0,0 +1,11 @@ + + + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/TemplateLibrary/SuitePage/content.txt b/fitnesse/FitNesseRoot/TemplateLibrary/SuitePage/content.txt new file mode 100644 index 0000000..6d2c743 --- /dev/null +++ b/fitnesse/FitNesseRoot/TemplateLibrary/SuitePage/content.txt @@ -0,0 +1,2 @@ +!1 Test suite X +!contents -R2 -g -p -f -h \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/TemplateLibrary/SuitePage/properties.xml b/fitnesse/FitNesseRoot/TemplateLibrary/SuitePage/properties.xml new file mode 100644 index 0000000..6e9e1e6 --- /dev/null +++ b/fitnesse/FitNesseRoot/TemplateLibrary/SuitePage/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/TemplateLibrary/TestPage/content.txt b/fitnesse/FitNesseRoot/TemplateLibrary/TestPage/content.txt new file mode 100644 index 0000000..0d55031 --- /dev/null +++ b/fitnesse/FitNesseRoot/TemplateLibrary/TestPage/content.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/TemplateLibrary/TestPage/properties.xml b/fitnesse/FitNesseRoot/TemplateLibrary/TestPage/properties.xml new file mode 100644 index 0000000..e13fdf4 --- /dev/null +++ b/fitnesse/FitNesseRoot/TemplateLibrary/TestPage/properties.xml @@ -0,0 +1,12 @@ + + + true + true + true + true + true + true + true + true + true + diff --git a/fitnesse/FitNesseRoot/TemplateLibrary/content.txt b/fitnesse/FitNesseRoot/TemplateLibrary/content.txt new file mode 100644 index 0000000..f49bd19 --- /dev/null +++ b/fitnesse/FitNesseRoot/TemplateLibrary/content.txt @@ -0,0 +1,5 @@ +Here all the pages go that are available throughout the wiki. + +Find out more on page .FitNesse.UserGuide.WritingAcceptanceTests.SpecialPages. + +!contents -R2 -g -p -f -h \ No newline at end of file diff --git a/fitnesse/FitNesseRoot/TemplateLibrary/properties.xml b/fitnesse/FitNesseRoot/TemplateLibrary/properties.xml new file mode 100644 index 0000000..2a99016 --- /dev/null +++ b/fitnesse/FitNesseRoot/TemplateLibrary/properties.xml @@ -0,0 +1,12 @@ + + +true +true +Base template library +true +true +true +true +true +true + diff --git a/fitnesse/FitNesseRoot/properties b/fitnesse/FitNesseRoot/properties new file mode 100644 index 0000000..2f9c8d9 --- /dev/null +++ b/fitnesse/FitNesseRoot/properties @@ -0,0 +1,3 @@ +##FitNesse properties +#Wed Feb 22 14:13:17 EST 2017 +Version=v20161106