├── .gitignore ├── .travis.yml ├── README.md ├── c-sharp-rest ├── PetClinic │ ├── PetClinic.gw3 │ ├── PetClinic.sln │ ├── PetClinic │ │ ├── FindOwnersSharedState.cs │ │ ├── Helper.cs │ │ ├── NewOwnerSharedState.cs │ │ ├── OwnerInformationSharedState.cs │ │ ├── PetClinic.csproj │ │ ├── PetClinicSharedState.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── VeterinariensSharedState.cs │ │ └── packages.config │ ├── README.md │ └── packages │ │ ├── FluentAssertions.4.5.0 │ │ ├── FluentAssertions.4.5.0.nupkg │ │ └── lib │ │ │ ├── dotnet │ │ │ ├── FluentAssertions.Core.dll │ │ │ ├── FluentAssertions.Core.pdb │ │ │ ├── FluentAssertions.dll │ │ │ ├── FluentAssertions.pdb │ │ │ └── FluentAssertions.xml │ │ │ ├── monoandroid │ │ │ ├── FluentAssertions.Core.dll │ │ │ ├── FluentAssertions.Core.pdb │ │ │ └── FluentAssertions.Core.xml │ │ │ ├── monotouch │ │ │ ├── FluentAssertions.Core.dll │ │ │ ├── FluentAssertions.Core.pdb │ │ │ └── FluentAssertions.Core.xml │ │ │ ├── net40 │ │ │ ├── FluentAssertions.Core.dll │ │ │ ├── FluentAssertions.Core.pdb │ │ │ ├── FluentAssertions.Core.xml │ │ │ ├── FluentAssertions.dll │ │ │ ├── FluentAssertions.pdb │ │ │ └── FluentAssertions.xml │ │ │ ├── net45 │ │ │ ├── FluentAssertions.Core.dll │ │ │ ├── FluentAssertions.Core.pdb │ │ │ ├── FluentAssertions.Core.xml │ │ │ ├── FluentAssertions.dll │ │ │ ├── FluentAssertions.pdb │ │ │ └── FluentAssertions.xml │ │ │ ├── portable-monotouch+monoandroid+xamarin.ios │ │ │ ├── FluentAssertions.Core.dll │ │ │ ├── FluentAssertions.Core.pdb │ │ │ └── FluentAssertions.Core.xml │ │ │ ├── portable-net40+sl5+win8+wp8+wpa81 │ │ │ ├── FluentAssertions.Core.dll │ │ │ ├── FluentAssertions.Core.pdb │ │ │ ├── FluentAssertions.Core.xml │ │ │ ├── FluentAssertions.XML │ │ │ ├── FluentAssertions.dll │ │ │ └── FluentAssertions.pdb │ │ │ ├── portable-win81+wpa81 │ │ │ ├── FluentAssertions.Core.dll │ │ │ ├── FluentAssertions.Core.pdb │ │ │ ├── FluentAssertions.Core.xml │ │ │ ├── FluentAssertions.dll │ │ │ ├── FluentAssertions.pdb │ │ │ ├── FluentAssertions.pri │ │ │ └── FluentAssertions.xml │ │ │ ├── sl5 │ │ │ ├── FluentAssertions.Core.dll │ │ │ ├── FluentAssertions.Core.pdb │ │ │ ├── FluentAssertions.Core.xml │ │ │ ├── FluentAssertions.dll │ │ │ ├── FluentAssertions.pdb │ │ │ ├── FluentAssertions.xml │ │ │ ├── Microsoft.CSharp.dll │ │ │ ├── Microsoft.CSharp.xml │ │ │ ├── Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll │ │ │ ├── Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.xml │ │ │ ├── System.Xml.Linq.dll │ │ │ ├── System.Xml.Linq.xml │ │ │ ├── de │ │ │ │ ├── Microsoft.CSharp.resources.dll │ │ │ │ └── System.Xml.Linq.resources.dll │ │ │ ├── es │ │ │ │ ├── Microsoft.CSharp.resources.dll │ │ │ │ └── System.Xml.Linq.resources.dll │ │ │ ├── fr │ │ │ │ ├── Microsoft.CSharp.resources.dll │ │ │ │ └── System.Xml.Linq.resources.dll │ │ │ ├── it │ │ │ │ ├── Microsoft.CSharp.resources.dll │ │ │ │ └── System.Xml.Linq.resources.dll │ │ │ ├── ja │ │ │ │ ├── Microsoft.CSharp.resources.dll │ │ │ │ └── System.Xml.Linq.resources.dll │ │ │ ├── ko │ │ │ │ ├── Microsoft.CSharp.resources.dll │ │ │ │ └── System.Xml.Linq.resources.dll │ │ │ ├── ru │ │ │ │ ├── Microsoft.CSharp.resources.dll │ │ │ │ └── System.Xml.Linq.resources.dll │ │ │ ├── zh-Hans │ │ │ │ ├── Microsoft.CSharp.resources.dll │ │ │ │ └── System.Xml.Linq.resources.dll │ │ │ └── zh-Hant │ │ │ │ ├── Microsoft.CSharp.resources.dll │ │ │ │ └── System.Xml.Linq.resources.dll │ │ │ ├── win81 │ │ │ ├── FluentAssertions.Core.dll │ │ │ ├── FluentAssertions.Core.pdb │ │ │ ├── FluentAssertions.Core.xml │ │ │ ├── FluentAssertions.dll │ │ │ ├── FluentAssertions.pdb │ │ │ ├── FluentAssertions.pri │ │ │ └── FluentAssertions.xml │ │ │ ├── wp8 │ │ │ ├── FluentAssertions.Core.dll │ │ │ ├── FluentAssertions.Core.pdb │ │ │ ├── FluentAssertions.Core.xml │ │ │ ├── FluentAssertions.dll │ │ │ ├── FluentAssertions.pdb │ │ │ └── FluentAssertions.xml │ │ │ ├── wpa81 │ │ │ ├── FluentAssertions.Core.dll │ │ │ ├── FluentAssertions.Core.pdb │ │ │ ├── FluentAssertions.Core.xml │ │ │ ├── FluentAssertions.dll │ │ │ ├── FluentAssertions.pdb │ │ │ ├── FluentAssertions.pri │ │ │ └── FluentAssertions.xml │ │ │ └── xamarin.ios │ │ │ ├── FluentAssertions.Core.dll │ │ │ ├── FluentAssertions.Core.pdb │ │ │ └── FluentAssertions.Core.xml │ │ ├── Newtonsoft.Json.8.0.3 │ │ ├── Newtonsoft.Json.8.0.3.nupkg │ │ ├── lib │ │ │ ├── net20 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ │ ├── net35 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ │ ├── net40 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ │ ├── net45 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ │ ├── portable-net40+sl5+wp80+win8+wpa81 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ │ └── portable-net45+wp80+win8+wpa81+dnxcore50 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ └── tools │ │ │ └── install.ps1 │ │ ├── RestSharp.105.2.3 │ │ ├── RestSharp.105.2.3.nupkg │ │ ├── lib │ │ │ ├── MonoAndroid10 │ │ │ │ ├── RestSharp.dll │ │ │ │ └── RestSharp.xml │ │ │ ├── MonoTouch10 │ │ │ │ ├── RestSharp.dll │ │ │ │ └── RestSharp.xml │ │ │ ├── Xamarin.iOS10 │ │ │ │ ├── RestSharp.dll │ │ │ │ └── RestSharp.xml │ │ │ ├── net35 │ │ │ │ ├── RestSharp.dll │ │ │ │ └── RestSharp.xml │ │ │ ├── net4-client │ │ │ │ ├── RestSharp.dll │ │ │ │ └── RestSharp.xml │ │ │ ├── net4 │ │ │ │ ├── RestSharp.dll │ │ │ │ └── RestSharp.xml │ │ │ ├── net45 │ │ │ │ ├── RestSharp.dll │ │ │ │ └── RestSharp.xml │ │ │ ├── net451 │ │ │ │ ├── RestSharp.dll │ │ │ │ └── RestSharp.xml │ │ │ ├── net452 │ │ │ │ ├── RestSharp.dll │ │ │ │ └── RestSharp.xml │ │ │ ├── net46 │ │ │ │ ├── RestSharp.dll │ │ │ │ └── RestSharp.xml │ │ │ ├── sl5 │ │ │ │ ├── RestSharp.dll │ │ │ │ └── RestSharp.xml │ │ │ ├── windowsphone8 │ │ │ │ ├── RestSharp.dll │ │ │ │ └── RestSharp.xml │ │ │ └── windowsphone81 │ │ │ │ ├── RestSharp.dll │ │ │ │ └── RestSharp.xml │ │ └── readme.txt │ │ ├── Selenium.Mozilla.Firefox.Webdriver.0.6.0 │ │ ├── Driver │ │ │ └── wires-0.6.0-win.exe │ │ ├── Selenium.Mozilla.Firefox.Webdriver.0.6.0.nupkg │ │ ├── content │ │ │ └── Readme.txt │ │ └── tools │ │ │ ├── install.ps1 │ │ │ └── uninstall.ps1 │ │ ├── Selenium.Support.2.53.0 │ │ ├── Selenium.Support.2.53.0.nupkg │ │ └── lib │ │ │ ├── net35 │ │ │ ├── WebDriver.Support.dll │ │ │ └── WebDriver.Support.xml │ │ │ └── net40 │ │ │ ├── WebDriver.Support.dll │ │ │ └── WebDriver.Support.xml │ │ ├── Selenium.WebDriver.2.53.0 │ │ ├── Selenium.WebDriver.2.53.0.nupkg │ │ └── lib │ │ │ ├── net35 │ │ │ ├── WebDriver.dll │ │ │ └── WebDriver.xml │ │ │ └── net40 │ │ │ ├── WebDriver.dll │ │ │ └── WebDriver.xml │ │ └── repositories.config └── SmallModel │ ├── README.md │ ├── SmallModel.sln │ ├── SmallModel │ ├── Program.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── SmallModel.cs │ ├── SmallModel.csproj │ ├── SmallModel.graphml │ └── packages.config │ └── packages │ ├── Newtonsoft.Json.8.0.3 │ ├── Newtonsoft.Json.8.0.3.nupkg │ ├── lib │ │ ├── net20 │ │ │ ├── Newtonsoft.Json.dll │ │ │ └── Newtonsoft.Json.xml │ │ ├── net35 │ │ │ ├── Newtonsoft.Json.dll │ │ │ └── Newtonsoft.Json.xml │ │ ├── net40 │ │ │ ├── Newtonsoft.Json.dll │ │ │ └── Newtonsoft.Json.xml │ │ ├── net45 │ │ │ ├── Newtonsoft.Json.dll │ │ │ └── Newtonsoft.Json.xml │ │ ├── portable-net40+sl5+wp80+win8+wpa81 │ │ │ ├── Newtonsoft.Json.dll │ │ │ └── Newtonsoft.Json.xml │ │ └── portable-net45+wp80+win8+wpa81+dnxcore50 │ │ │ ├── Newtonsoft.Json.dll │ │ │ └── Newtonsoft.Json.xml │ └── tools │ │ └── install.ps1 │ ├── RestSharp.105.2.3 │ ├── RestSharp.105.2.3.nupkg │ ├── lib │ │ ├── MonoAndroid10 │ │ │ ├── RestSharp.dll │ │ │ └── RestSharp.xml │ │ ├── MonoTouch10 │ │ │ ├── RestSharp.dll │ │ │ └── RestSharp.xml │ │ ├── Xamarin.iOS10 │ │ │ ├── RestSharp.dll │ │ │ └── RestSharp.xml │ │ ├── net35 │ │ │ ├── RestSharp.dll │ │ │ └── RestSharp.xml │ │ ├── net4-client │ │ │ ├── RestSharp.dll │ │ │ └── RestSharp.xml │ │ ├── net4 │ │ │ ├── RestSharp.dll │ │ │ └── RestSharp.xml │ │ ├── net45 │ │ │ ├── RestSharp.dll │ │ │ └── RestSharp.xml │ │ ├── net451 │ │ │ ├── RestSharp.dll │ │ │ └── RestSharp.xml │ │ ├── net452 │ │ │ ├── RestSharp.dll │ │ │ └── RestSharp.xml │ │ ├── net46 │ │ │ ├── RestSharp.dll │ │ │ └── RestSharp.xml │ │ ├── sl5 │ │ │ ├── RestSharp.dll │ │ │ └── RestSharp.xml │ │ ├── windowsphone8 │ │ │ ├── RestSharp.dll │ │ │ └── RestSharp.xml │ │ └── windowsphone81 │ │ │ ├── RestSharp.dll │ │ │ └── RestSharp.xml │ └── readme.txt │ └── repositories.config ├── c-sharp-websocket ├── SmallModel │ ├── README.md │ ├── SmallModel.graphml │ ├── SmallModel.png │ ├── SmallModel.sln │ ├── SmallModel │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── SmallModel.cs │ │ ├── SmallModel.csproj │ │ └── packages.config │ └── packages │ │ ├── Alchemy.2.2.1 │ │ ├── Alchemy.2.2.1.nupkg │ │ └── lib │ │ │ └── net40 │ │ │ └── Alchemy.dll │ │ ├── Newtonsoft.Json.6.0.8 │ │ ├── Newtonsoft.Json.6.0.8.nupkg │ │ ├── lib │ │ │ ├── net20 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ │ ├── net35 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ │ ├── net40 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ │ ├── net45 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ │ ├── netcore45 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ │ ├── portable-net40+sl5+wp80+win8+wpa81 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ │ └── portable-net45+wp80+win8+wpa81+aspnetcore50 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ └── tools │ │ │ └── install.ps1 │ │ └── repositories.config └── gw3-client │ ├── SmallModel.json │ ├── gw3-client.sln │ ├── gw3-client │ ├── MainWindow.cs │ ├── Program.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── gtk-gui │ │ ├── MainWindow.cs │ │ ├── generated.cs │ │ └── gui.stetic │ ├── gw3-client.csproj │ └── packages.config │ └── packages │ ├── Alchemy.2.2.1 │ ├── Alchemy.2.2.1.nupkg │ └── lib │ │ └── net40 │ │ └── Alchemy.dll │ └── repositories.config ├── command-line-scripts └── run-RESTFUL-Test.bash ├── html-websocket ├── README.md ├── gw3-client.html └── prototype.js ├── java-algorithm ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── company │ │ ├── MyPathGenerator.java │ │ ├── MyReverseAlgorithm.java │ │ └── MyTest.java │ └── resources │ └── logback.xml ├── java-amazon ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── README.md ├── build │ └── reports │ │ └── tests │ │ ├── 1613982554107.0.html │ │ ├── 1613982554107.0.png │ │ ├── 1613982994055.0.html │ │ ├── 1613982994055.0.png │ │ ├── 1613983242167.0.html │ │ ├── 1613983242167.0.png │ │ ├── 1614242647045.0.html │ │ ├── 1614242647045.0.png │ │ ├── 1660719679822.0.html │ │ └── 1660719679822.0.png ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ └── main │ ├── java │ └── org │ │ └── graphwalker │ │ └── ShoppingCartTest.java │ └── resources │ └── org │ └── graphwalker │ └── ShoppingCart.json ├── java-annotation ├── pom.xml └── src │ └── test │ ├── java │ └── org │ │ └── graphwalker │ │ └── example │ │ └── CreateModelTest.java │ └── resources │ ├── logback-test.xml │ └── org │ └── graphwalker │ └── example │ └── CreateModel.graphml ├── java-appium ├── README.md ├── pom.xml └── src │ └── main │ ├── java │ └── org │ │ └── graphwalker │ │ └── appium │ │ └── NotesListTest.java │ └── resources │ ├── Notepad.apk │ └── org │ └── graphwalker │ └── appium │ ├── NotesList.graphml │ └── NotesList.png ├── java-dataDriven ├── README.md ├── pom.xml └── src │ └── main │ ├── java │ └── org │ │ └── graphwalker │ │ └── UsingDataFromTestImpl.java │ └── resources │ └── org │ └── graphwalker │ └── UsingDataFromTest.json ├── java-integration-test ├── pom.xml └── src │ ├── main │ └── java │ │ └── org.graphwalker.example │ │ └── Calculator.java │ └── test │ ├── java │ └── org │ │ └── graphwalker │ │ └── example │ │ ├── CalculatorAStarTest.java │ │ ├── CalculatorTest.java │ │ └── CalulatorIT.java │ └── resources │ └── org │ └── graphwalker │ └── example │ └── CalculatorModel.graphml ├── java-petclinic ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── README.md ├── build │ └── reports │ │ └── tests │ │ └── 1614171832475.0.html ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── company │ │ ├── modelimplementations │ │ ├── FindOwnersTest.java │ │ ├── NewOwnerTest.java │ │ ├── OwnerInformationTest.java │ │ ├── PetClinicTest.java │ │ └── VeterinariansTest.java │ │ ├── observers │ │ └── GraphStreamObserver.java │ │ └── runners │ │ ├── GraphStreamApplication.java │ │ └── WebSocketApplication.java │ └── resources │ └── com │ └── company │ └── PetClinic.json ├── java-plugin-generator ├── README.md ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── mycompany │ │ └── lib │ │ └── PluginGenerator.java │ └── resources │ └── com │ └── company │ └── SimpleModel.json ├── java-prestashop ├── README.md ├── images │ └── prestashop │ │ ├── After_installation.png │ │ ├── Database_configuration.png │ │ ├── File_and_folders_permissions.png │ │ ├── InstallationAssistant.png │ │ ├── Store_information.png │ │ └── bitnami_installing.png ├── pom.xml ├── requirement │ └── UC01.md └── src │ └── main │ ├── java │ └── com │ │ └── prestashop │ │ ├── modelimplementation │ │ ├── EyeImpl.java │ │ ├── SelenideImpl.java │ │ └── SikuliImpl.java │ │ └── runners │ │ ├── EyeRunner.java │ │ ├── SelenideRunner.java │ │ └── SikuliRunner.java │ └── resources │ ├── com │ └── prestashop │ │ ├── UC01 - Naive version.json │ │ └── UC01 - Normalized version.json │ ├── images │ ├── addToCart.png │ ├── cartButton.png │ ├── continueShopping.png │ ├── homePage.png │ ├── localhost_icon.png │ ├── personalInformation.png │ ├── proceedToCheckout.png │ ├── product.png │ ├── productPage.png │ └── shoppingCart.png │ └── logback.xml ├── java-websocket ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── graphwalker │ │ └── example │ │ └── GraphWalkerWebSocketClient.java │ └── test │ ├── java │ └── org │ │ └── graphwalker │ │ └── example │ │ └── GraphWalkerClientTest.java │ └── resources │ ├── json │ └── SmallModel.json │ └── logback-test.xml └── pom.xml /.gitignore: -------------------------------------------------------------------------------- 1 | # Eclipse stuff # 2 | ################# 3 | .classpath 4 | .project 5 | .settings/ 6 | 7 | # Intellij stuff # 8 | ################## 9 | *.iml 10 | *.ipr 11 | *.iws 12 | .idea/ 13 | 14 | # Visual Code stuff # 15 | ##################### 16 | .vscode/ 17 | 18 | # Build and unit tests stuff # 19 | ############################# 20 | logs/ 21 | target/ 22 | pom.xml.tag 23 | pom.xml.releaseBackup 24 | pom.xml.next 25 | release.properties 26 | work/ 27 | amps-standalone/ 28 | */dependency-reduced-pom.xml 29 | *.userprefs 30 | bin/ 31 | obj/ 32 | */build/ 33 | 34 | # eye jar # 35 | # ######### 36 | */eye2.jar 37 | 38 | # Mac stuff # 39 | ############# 40 | .DS_Store 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: java 2 | dist: trusty 3 | jdk: 4 | - oraclejdk8 5 | 6 | # whitelist 7 | branches: 8 | only: 9 | - master 10 | 11 | env: 12 | global: 13 | - secure: "Si+FksmD04Qev09hkYqWYN4rYQderrvMt6/kZBTgEek/v4Bd8QVCcbkZemYQCLnfhm94fNJDVrvpbrZhkeSWhCXKnnsYMH9oaxQWSd4aUI55V9QAseVAWMod5d2TSD7kTIo1owV5xh9LHTLmwnv4v6WmV3dSHSQc0zQh09dFC/M=" 14 | - secure: "IVcJyf13GCwLkpYKqygwTH9f3EG1YiqdmXWPCt5d9DXKKLjbSq/MFQ/nwdgfgfJAsgrSXN0I+6fIf8/INtI4YcKTpzAblXdeAkWdVrD4xpRSC7TpEHdEGMWEBtSWzJy8b92F2cxCXuk/QPDK4d8/QuelkFD9C9IztmgSqq7fQQg=" 15 | 16 | before_install: 17 | - pip install --user codecov 18 | - cat /etc/hosts # optionally check the content *before* 19 | - sudo hostname "$(hostname | cut -c1-63)" 20 | - sed -e "s/^\\(127\\.0\\.0\\.1.*\\)/\\1 $(hostname | cut -c1-63)/" /etc/hosts | sudo tee /etc/hosts 21 | - cat /etc/hosts # optionally check the content *after* 22 | - sudo apt-get update -qq 23 | 24 | install: 25 | - 26 | 27 | script: 28 | - mvn compile -B 29 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | graphwalker-example [![Build Status](https://travis-ci.org/GraphWalker/graphwalker-example.svg?branch=master)](https://travis-ci.org/GraphWalker/graphwalker-example) [![Codeship Status for roachhd/Notepad](https://codeship.com/projects/e5072e80-833c-0133-fb5f-2e117485f168/status)](https://codeship.com/projects/121755) 2 | =================== 3 | -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/PetClinic.gw3: -------------------------------------------------------------------------------- 1 | {"name":"VISMODEL","models":[{"name":"FindOwnersSharedState","id":"476fb419-3d7d-4492-802e-6695fe93f595","generator":"random(edge_coverage(100))","vertices":[{"id":"n0","name":"v_FindOwners","sharedState":"FindOwners","properties":{"x":0,"y":0}},{"id":"n1","name":"v_NewOwner","sharedState":"NewOwner","properties":{"x":120.65625,"y":-157.8125}},{"id":"n2","name":"v_Owners","properties":{"x":-219.34375,"y":-187.8125}}],"edges":[{"id":"e0","name":"e_AddOwner","sourceVertexId":"n0","targetVertexId":"n1"},{"id":"e1","name":"e_FindOwners","sourceVertexId":"n1","targetVertexId":"n0"},{"id":"e2","name":"e_Search","sourceVertexId":"n0","targetVertexId":"n2"},{"id":"e3","name":"e_FindOwners","sourceVertexId":"n2","targetVertexId":"n0"}]},{"name":"NewOwnerSharedState","id":"b23d193c-287a-4eb9-a318-52ead7680ff7","generator":"random(edge_coverage(100))","vertices":[{"id":"n0","name":"v_NewOwner","sharedState":"NewOwner","properties":{"x":0,"y":0}},{"id":"n1","name":"v_IncorrectData","properties":{"x":131.65625,"y":-205.3125}},{"id":"n2","name":"v_OwnerInformation","sharedState":"OwnerInformation","properties":{"x":-284.34375,"y":-143.3125}}],"edges":[{"id":"e0","name":"e_IncorrectData","sourceVertexId":"n0","targetVertexId":"n1"},{"id":"e1","sourceVertexId":"n1","targetVertexId":"n0"},{"id":"e2","name":"e_CorrectData","sourceVertexId":"n0","targetVertexId":"n2"}]},{"name":"OwnerInformationSharedState","id":"5f1149c3-2853-47e6-838d-691bf30406a8","generator":"random(edge_coverage(100))","actions":["numOfPets=0;"],"vertices":[{"id":"n0","name":"v_OwnerInformation","sharedState":"OwnerInformation","properties":{"x":-23.34375,"y":-51.8125}},{"id":"n1","name":"v_NewPet","properties":{"x":-27.34375,"y":118.1875}},{"id":"n2","name":"v_Pet","properties":{"x":-317.34375,"y":7.1875}},{"id":"n3","name":"v_NewVisit","properties":{"x":139.65625,"y":-195.8125}},{"id":"n4","name":"v_FindOwners","sharedState":"FindOwners","properties":{"x":-270.34375,"y":-181.8125}}],"edges":[{"id":"e0","name":"e_AddPetSuccessfully","actions":[" numOfPets++;"],"sourceVertexId":"n1","targetVertexId":"n0"},{"id":"e1","name":"e_AddNewPet","sourceVertexId":"n0","targetVertexId":"n1"},{"id":"e2","name":"e_EditPet","guard":"numOfPets>0","sourceVertexId":"n0","targetVertexId":"n2"},{"id":"e3","name":"e_UpdatePet","sourceVertexId":"n2","targetVertexId":"n0"},{"id":"e4","name":"e_AddPetFailed","sourceVertexId":"n1","targetVertexId":"n1"},{"id":"e5","name":"e_AddVisit","guard":"numOfPets>0","sourceVertexId":"n0","targetVertexId":"n3"},{"id":"e6","name":"e_VisitAddedSuccessfully","sourceVertexId":"n3","targetVertexId":"n0"},{"id":"e7","name":"e_VisitAddedFailed","sourceVertexId":"n3","targetVertexId":"n3"},{"id":"e8","name":"e_FindOwners","sourceVertexId":"n0","targetVertexId":"n4"}]},{"name":"PetClinicSharedState","id":"3f6b365f-7011-4db6-b0cc-e19aa453d9b8","generator":"random(edge_coverage(100))","vertices":[{"id":"n0","name":"v_HomePage","sharedState":"HomePage","properties":{"x":0,"y":0}},{"id":"n1","name":"v_FindOwners","sharedState":"FindOwners","properties":{"x":112.65625,"y":-180.8125}},{"id":"n2","name":"v_Veterinarians","sharedState":"Veterinarians","properties":{"x":-246.34375,"y":-153.8125}}],"edges":[{"id":"e0","name":"e_FindOwners","sourceVertexId":"n0","targetVertexId":"n1"},{"id":"e1","name":"e_HomePage","sourceVertexId":"n1","targetVertexId":"n0"},{"id":"e2","name":"e_Veterinarians","sourceVertexId":"n0","targetVertexId":"n2"},{"id":"e3","name":"e_HomePage","sourceVertexId":"n2","targetVertexId":"n0"},{"id":"e4","name":"e_Veterinarians","sourceVertexId":"n1","targetVertexId":"n2"},{"id":"e5","name":"e_FindOwners","sourceVertexId":"n2","targetVertexId":"n1"},{"id":"e6","name":"e_StartBrowser","targetVertexId":"n0"}],"startElementId":"e6"},{"name":"VeterinariensSharedState","id":"368a9635-c59a-4285-ad01-cf75b0baa978","generator":"random(edge_coverage(100))","vertices":[{"id":"n0","name":"v_Veterinarians","sharedState":"Veterinarians","properties":{"x":0,"y":0}},{"id":"n1","name":"v_SearchResult","properties":{"x":-213.34375,"y":-138.8125}}],"edges":[{"id":"e0","name":"e_Search","sourceVertexId":"n0","targetVertexId":"n1"},{"id":"e1","sourceVertexId":"n1","targetVertexId":"n0"}]}]} -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/PetClinic.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2012 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PetClinic", "PetClinic\PetClinic.csproj", "{21010AAD-9FE2-4DEC-AA58-C1A12260D671}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|x86 = Debug|x86 9 | Release|x86 = Release|x86 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {21010AAD-9FE2-4DEC-AA58-C1A12260D671}.Debug|x86.ActiveCfg = Debug|x86 13 | {21010AAD-9FE2-4DEC-AA58-C1A12260D671}.Debug|x86.Build.0 = Debug|x86 14 | {21010AAD-9FE2-4DEC-AA58-C1A12260D671}.Release|x86.ActiveCfg = Release|x86 15 | {21010AAD-9FE2-4DEC-AA58-C1A12260D671}.Release|x86.Build.0 = Release|x86 16 | EndGlobalSection 17 | EndGlobal 18 | -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/PetClinic/FindOwnersSharedState.cs: -------------------------------------------------------------------------------- 1 | using FluentAssertions; 2 | using OpenQA.Selenium; 3 | using System; 4 | 5 | namespace PetClinic 6 | { 7 | public class FindOwnersSharedState 8 | { 9 | public void e_AddOwner() { 10 | Helper.WaitForElement(By.LinkText("Add Owner")).Click(); 11 | } 12 | 13 | public void e_FindOwners() { 14 | Helper.WaitForElement(By.ClassName("icon-search")).Click(); 15 | } 16 | 17 | public void e_Search() { 18 | Helper.WaitForElement(By.CssSelector("button[type=\"submit\"]")).Click(); 19 | } 20 | 21 | public void v_FindOwners() { 22 | Helper.WaitForElement(By.TagName("h2")).Text.Should().Match("Find Owners"); 23 | } 24 | 25 | public void v_NewOwner() { 26 | Helper.WaitForElement(By.TagName("h2")).Text.Should().Match("New Owner"); 27 | } 28 | 29 | public void v_Owners() { 30 | Helper.WaitForElement(By.TagName("h2")).Text.Should().Match("Owners"); 31 | } 32 | } 33 | } 34 | 35 | -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/PetClinic/Helper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using OpenQA.Selenium; 3 | using OpenQA.Selenium.Firefox; 4 | using FluentAssertions.Execution; 5 | using System.Threading; 6 | using System.Collections.Generic; 7 | using System.Linq; 8 | 9 | 10 | namespace PetClinic 11 | { 12 | class Helper 13 | { 14 | private static IWebDriver driver; 15 | 16 | /** 17 | * Timeout time in seconds used for waiting for element(s) to show up. 18 | */ 19 | static int timeOut = 10; 20 | 21 | public static IWebDriver GetWebDriver() 22 | { 23 | if (driver == null) 24 | { 25 | driver = new FirefoxDriver(); 26 | } 27 | return driver; 28 | } 29 | 30 | /** 31 | * Will wait for a specified web element to appear. If not found 32 | * an assertion will fail. 33 | * 34 | * @param by The description of the element 35 | * @return The matching element if found. 36 | */ 37 | public static IWebElement WaitForElement(By by) 38 | { 39 | for (int second = 0; ; second++) 40 | { 41 | if (second >= timeOut) 42 | { 43 | Execute.Assertion.FailWith("Timeout occurred while waiting for: " + by.ToString()); 44 | } 45 | try 46 | { 47 | return GetWebDriver().FindElement(by); 48 | } 49 | catch (Exception) 50 | { 51 | Thread.Sleep(1000); 52 | } 53 | } 54 | } 55 | 56 | /** 57 | * Will wait for a specified web element(s) to appear. If not found 58 | * an assertion will fail. 59 | * 60 | * @param by The description of the element 61 | * @return A list of matching element(s) if found. 62 | */ 63 | public static List WaitForElements(By by) 64 | { 65 | for (int second = 0; ; second++) 66 | { 67 | if (second >= timeOut) 68 | { 69 | Execute.Assertion.FailWith("Timeout occurred while waiting for: " + by.ToString()); 70 | } 71 | 72 | try 73 | { 74 | return new List(GetWebDriver().FindElements(by)); 75 | } 76 | catch (Exception) 77 | { 78 | Thread.Sleep(1000); 79 | } 80 | } 81 | } 82 | 83 | public static string RandomAlphaString(int length) 84 | { 85 | const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdfeghijklmnopqrstuvxyz"; 86 | var random = new Random(); 87 | return new string(Enumerable.Repeat(chars, length) 88 | .Select(s => s[random.Next(s.Length)]).ToArray()); 89 | } 90 | 91 | public static string RandomNumberString(int length) 92 | { 93 | const string chars = "0123456789"; 94 | var random = new Random(); 95 | return new string(Enumerable.Repeat(chars, length) 96 | .Select(s => s[random.Next(s.Length)]).ToArray()); 97 | } 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/PetClinic/NewOwnerSharedState.cs: -------------------------------------------------------------------------------- 1 | using FluentAssertions; 2 | using OpenQA.Selenium; 3 | using System; 4 | 5 | namespace PetClinic 6 | { 7 | public class NewOwnerSharedState 8 | { 9 | public void e_CorrectData() { 10 | Helper.WaitForElement(By.Id("firstName")).Clear(); 11 | Helper.WaitForElement(By.Id("firstName")).SendKeys(Helper.RandomAlphaString(10)); 12 | 13 | Helper.WaitForElement(By.Id("lastName")).Clear(); 14 | Helper.WaitForElement(By.Id("lastName")).SendKeys(Helper.RandomAlphaString(10)); 15 | 16 | Helper.WaitForElement(By.Id("address")).Clear(); 17 | Helper.WaitForElement(By.Id("address")).SendKeys(Helper.RandomAlphaString(10)); 18 | 19 | Helper.WaitForElement(By.Id("city")).Clear(); 20 | Helper.WaitForElement(By.Id("city")).SendKeys(Helper.RandomAlphaString(10)); 21 | 22 | Helper.WaitForElement(By.Id("telephone")).Clear(); 23 | Helper.WaitForElement(By.Id("telephone")).SendKeys(Helper.RandomNumberString(10)); 24 | 25 | Helper.WaitForElement(By.CssSelector("button[type=\"submit\"]")).Click(); 26 | } 27 | 28 | public void e_IncorrectData() { 29 | Helper.WaitForElement(By.Id("firstName")).Clear(); 30 | Helper.WaitForElement(By.Id("firstName")).SendKeys(Helper.RandomAlphaString(10)); 31 | 32 | Helper.WaitForElement(By.Id("lastName")).Clear(); 33 | Helper.WaitForElement(By.Id("lastName")).SendKeys(Helper.RandomAlphaString(10)); 34 | 35 | Helper.WaitForElement(By.Id("address")).Clear(); 36 | Helper.WaitForElement(By.Id("address")).SendKeys(Helper.RandomAlphaString(10)); 37 | 38 | Helper.WaitForElement(By.Id("city")).Clear(); 39 | Helper.WaitForElement(By.Id("city")).SendKeys(Helper.RandomAlphaString(10)); 40 | 41 | Helper.WaitForElement(By.Id("telephone")).Clear(); 42 | Helper.WaitForElement(By.Id("telephone")).SendKeys(Helper.RandomNumberString(20)); 43 | 44 | Helper.WaitForElement(By.CssSelector("button[type=\"submit\"]")).Click(); 45 | } 46 | 47 | public void v_IncorrectData() { 48 | Helper.WaitForElement(By.TagName("h2")).Text.Should().Match("New Owner"); 49 | 50 | String str = Helper.WaitForElement(By.CssSelector("div.control-group.error > div.controls > span.help-inline")).Text; 51 | str.Should().Contain("numeric value out of bounds (<10 digits>.<0 digits> expected"); 52 | } 53 | 54 | public void v_NewOwner() { 55 | Helper.WaitForElement(By.TagName("h2")).Text.Should().Match("New Owner"); 56 | } 57 | 58 | public void v_OwnerInformation() { 59 | Helper.WaitForElement(By.TagName("h2")).Text.Should().Match("Owner Information"); 60 | } 61 | } 62 | } 63 | 64 | -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/PetClinic/OwnerInformationSharedState.cs: -------------------------------------------------------------------------------- 1 | using FluentAssertions; 2 | using Newtonsoft.Json.Linq; 3 | using OpenQA.Selenium; 4 | using OpenQA.Selenium.Support.UI; 5 | using System; 6 | 7 | namespace PetClinic 8 | { 9 | public class OwnerInformationSharedState 10 | { 11 | public void e_AddNewPet() { 12 | Helper.WaitForElement(By.LinkText("Add New Pet")).Click(); 13 | } 14 | 15 | public void e_AddPetFailed() { 16 | Helper.WaitForElement(By.Id("name")).Clear(); 17 | Helper.WaitForElement(By.Id("birthDate")).Clear(); 18 | Helper.WaitForElement(By.Id("birthDate")).SendKeys("2015/02/05"); 19 | new SelectElement( Helper.WaitForElement(By.Id("type"))).SelectByText("dog"); 20 | Helper.WaitForElement(By.CssSelector("button[type=\"submit\"]")).Click(); 21 | } 22 | 23 | public void e_AddPetSuccessfully() { 24 | Helper.WaitForElement(By.Id("birthDate")).Clear(); 25 | Helper.WaitForElement(By.Id("birthDate")).SendKeys("2015/02/05"); 26 | Helper.WaitForElement(By.Id("name")).Clear(); 27 | Helper.WaitForElement(By.Id("name")).SendKeys(Helper.RandomAlphaString(10)); 28 | new SelectElement(Helper.WaitForElement(By.Id("type"))).SelectByText("dog"); 29 | Helper.WaitForElement(By.CssSelector("button[type=\"submit\"]")).Click(); 30 | } 31 | 32 | public void e_AddVisit() { 33 | Helper.WaitForElement(By.LinkText("Add Visit")).Click(); 34 | } 35 | 36 | public void e_EditPet() { 37 | Helper.WaitForElement(By.LinkText("Edit Pet")).Click(); 38 | } 39 | 40 | public void e_FindOwners() { 41 | Helper.WaitForElement(By.ClassName("icon-search")).Click(); 42 | } 43 | 44 | public void e_UpdatePet() { 45 | Helper.WaitForElement(By.CssSelector("button[type=\"submit\"]")).Click(); 46 | } 47 | 48 | public void e_VisitAddedFailed() { 49 | Helper.WaitForElement(By.Id("description")).Clear(); 50 | Helper.WaitForElement(By.CssSelector("button[type=\"submit\"]")).Click(); 51 | } 52 | 53 | public void e_VisitAddedSuccessfully() { 54 | Helper.WaitForElement(By.Id("description")).Clear(); 55 | Helper.WaitForElement(By.Id("description")).SendKeys((Helper.RandomAlphaString(10))); 56 | Helper.WaitForElement(By.CssSelector("button[type=\"submit\"]")).Click(); 57 | } 58 | 59 | public void v_FindOwners() { 60 | Helper.WaitForElement(By.TagName("h2")).Text.Should().Match("Find Owners"); 61 | } 62 | 63 | public void v_NewPet() { 64 | Helper.WaitForElement(By.TagName("h2")).Text.Should().Match("New Pet"); 65 | } 66 | 67 | public void v_NewVisit() { 68 | Helper.WaitForElement(By.TagName("h2")).Text.Should().Match("New Visit"); 69 | } 70 | 71 | public void v_OwnerInformation() { 72 | Helper.WaitForElement(By.TagName("h2")).Text.Should().Match("Owner Information"); 73 | GraphWalkerRestClient.setData("numOfPets = " + Helper.WaitForElements(By.XPath("//th[text()=\"Visit Date\"]")).Count + ";"); 74 | 75 | JObject jsonData = GraphWalkerRestClient.getData(); 76 | Console.WriteLine(" Number of pets (the data is fetched from PetClinic and set in the model): " + jsonData.GetValue("numOfPets")); 77 | } 78 | 79 | public void v_Pet() { 80 | Helper.WaitForElement(By.TagName("h2")).Text.Should().Match("Pet"); 81 | } 82 | } 83 | } 84 | 85 | -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/PetClinic/PetClinic.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | x86 6 | {21010AAD-9FE2-4DEC-AA58-C1A12260D671} 7 | Exe 8 | PetClinic 9 | PetClinic 10 | v4.5 11 | 12 | 13 | true 14 | full 15 | false 16 | bin\Debug 17 | DEBUG; 18 | prompt 19 | 4 20 | true 21 | x86 22 | 23 | 24 | full 25 | true 26 | bin\Release 27 | prompt 28 | 4 29 | true 30 | x86 31 | 32 | 33 | 34 | 35 | ..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll 36 | 37 | 38 | ..\packages\RestSharp.105.2.3\lib\net45\RestSharp.dll 39 | 40 | 41 | 42 | 43 | 44 | ..\packages\FluentAssertions.4.5.0\lib\net45\FluentAssertions.dll 45 | 46 | 47 | ..\packages\FluentAssertions.4.5.0\lib\net45\FluentAssertions.Core.dll 48 | 49 | 50 | ..\packages\Selenium.WebDriver.2.53.0\lib\net40\WebDriver.dll 51 | 52 | 53 | ..\packages\Selenium.Support.2.53.0\lib\net40\WebDriver.Support.dll 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/PetClinic/PetClinicSharedState.cs: -------------------------------------------------------------------------------- 1 | using FluentAssertions; 2 | using OpenQA.Selenium; 3 | using System; 4 | 5 | namespace PetClinic 6 | { 7 | public class PetClinicSharedState 8 | { 9 | public void v_FindOwners() { 10 | Helper.WaitForElement(By.TagName("h2")).Text.Should().Match("Find Owners"); 11 | } 12 | 13 | public void e_HomePage() { 14 | Helper.WaitForElement(By.ClassName("icon-home")).Click(); 15 | } 16 | 17 | public void e_Veterinarians() { 18 | Helper.WaitForElement(By.ClassName("icon-th-list")).Click(); 19 | } 20 | 21 | public void v_Veterinarians() { 22 | Helper.WaitForElement(By.TagName("h2")).Text.Should().Match("Veterinarians"); 23 | } 24 | 25 | public void e_FindOwners() { 26 | Helper.WaitForElement(By.ClassName("icon-search")).Click(); 27 | } 28 | 29 | public void v_HomePage() { 30 | Helper.WaitForElement(By.TagName("h2")).Text.Should().Match("Welcome"); 31 | } 32 | 33 | public void e_StartBrowser() { 34 | Helper.GetWebDriver().Navigate().GoToUrl("http://localhost:9966/petclinic/"); 35 | } 36 | } 37 | } 38 | 39 | -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/PetClinic/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | 4 | // Information about this assembly is defined by the following attributes. 5 | // Change them to the values specific to your project. 6 | 7 | [assembly: AssemblyTitle ("PetClinic")] 8 | [assembly: AssemblyDescription ("")] 9 | [assembly: AssemblyConfiguration ("")] 10 | [assembly: AssemblyCompany ("")] 11 | [assembly: AssemblyProduct ("")] 12 | [assembly: AssemblyCopyright ("krikar")] 13 | [assembly: AssemblyTrademark ("")] 14 | [assembly: AssemblyCulture ("")] 15 | 16 | // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". 17 | // The form "{Major}.{Minor}.*" will automatically update the build and revision, 18 | // and "{Major}.{Minor}.{Build}.*" will update just the revision. 19 | 20 | [assembly: AssemblyVersion ("1.0.*")] 21 | 22 | // The following attributes are used to specify the signing key for the assembly, 23 | // if desired. See the Mono documentation for more information about signing. 24 | 25 | //[assembly: AssemblyDelaySign(false)] 26 | //[assembly: AssemblyKeyFile("")] 27 | 28 | -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/PetClinic/VeterinariensSharedState.cs: -------------------------------------------------------------------------------- 1 | using FluentAssertions; 2 | using OpenQA.Selenium; 3 | using System; 4 | 5 | namespace PetClinic 6 | { 7 | public class VeterinariensSharedState 8 | { 9 | public void e_Search() { 10 | Helper.WaitForElement(By.CssSelector("input[type=\"search\"]")).Clear(); 11 | Helper.WaitForElement(By.CssSelector("input[type=\"search\"]")).SendKeys("helen"); 12 | } 13 | 14 | public void v_SearchResult() { 15 | String bodyText = Helper.WaitForElement(By.XPath("//table[@id='vets']/tbody/tr/td")).Text; 16 | bodyText.Should().Contain("Helen Leary"); 17 | } 18 | 19 | public void v_Veterinarians() { 20 | Helper.WaitForElement(By.TagName("h2")).Text.Should().Match("Veterinarians"); 21 | } 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/PetClinic/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/README.md: -------------------------------------------------------------------------------- 1 | This example will run simulated test using GraphWalker started as a REST service. 2 | 3 | * Download [latest GraphWalker standalone jar](http://graphwalker.github.io/content/archive/graphwalker-cli-3.4.2.jar). 4 | * `git clone https://github.com/GraphWalker/graphwalker-example.git` 5 | * `cd c-sharp-rest/PetClinic` 6 | * Start GraphWalker as a restful service: `java -jar graphwalker-cli-3.4.2.jar -d all online -o -s RESTFUL`. 7 | * Build the PetClinic project.
8 | On linux: `xbuild ` 9 | * Run the program: 10 | On linux: `mono PetClinic/bin/Debug/PetClinic.exe PetClinic.gw3` 11 | 12 | When run, the PetClinic program will connect to the GraphWalker service. 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/FluentAssertions.4.5.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/FluentAssertions.4.5.0.nupkg -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/dotnet/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/dotnet/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/dotnet/FluentAssertions.Core.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/dotnet/FluentAssertions.Core.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/dotnet/FluentAssertions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/dotnet/FluentAssertions.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/dotnet/FluentAssertions.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/dotnet/FluentAssertions.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/monoandroid/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/monoandroid/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/monoandroid/FluentAssertions.Core.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/monoandroid/FluentAssertions.Core.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/monotouch/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/monotouch/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/monotouch/FluentAssertions.Core.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/monotouch/FluentAssertions.Core.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/net40/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/net40/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/net40/FluentAssertions.Core.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/net40/FluentAssertions.Core.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/net40/FluentAssertions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/net40/FluentAssertions.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/net40/FluentAssertions.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/net40/FluentAssertions.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/net45/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/net45/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/net45/FluentAssertions.Core.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/net45/FluentAssertions.Core.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/net45/FluentAssertions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/net45/FluentAssertions.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/net45/FluentAssertions.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/net45/FluentAssertions.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-monotouch+monoandroid+xamarin.ios/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-monotouch+monoandroid+xamarin.ios/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-monotouch+monoandroid+xamarin.ios/FluentAssertions.Core.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-monotouch+monoandroid+xamarin.ios/FluentAssertions.Core.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-net40+sl5+win8+wp8+wpa81/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-net40+sl5+win8+wp8+wpa81/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-net40+sl5+win8+wp8+wpa81/FluentAssertions.Core.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-net40+sl5+win8+wp8+wpa81/FluentAssertions.Core.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-net40+sl5+win8+wp8+wpa81/FluentAssertions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-net40+sl5+win8+wp8+wpa81/FluentAssertions.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-net40+sl5+win8+wp8+wpa81/FluentAssertions.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-net40+sl5+win8+wp8+wpa81/FluentAssertions.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-win81+wpa81/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-win81+wpa81/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-win81+wpa81/FluentAssertions.Core.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-win81+wpa81/FluentAssertions.Core.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-win81+wpa81/FluentAssertions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-win81+wpa81/FluentAssertions.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-win81+wpa81/FluentAssertions.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-win81+wpa81/FluentAssertions.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-win81+wpa81/FluentAssertions.pri: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/portable-win81+wpa81/FluentAssertions.pri -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/FluentAssertions.Core.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/FluentAssertions.Core.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/FluentAssertions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/FluentAssertions.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/FluentAssertions.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/FluentAssertions.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/Microsoft.CSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/Microsoft.CSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/System.Xml.Linq.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/System.Xml.Linq.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/de/Microsoft.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/de/Microsoft.CSharp.resources.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/de/System.Xml.Linq.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/de/System.Xml.Linq.resources.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/es/Microsoft.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/es/Microsoft.CSharp.resources.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/es/System.Xml.Linq.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/es/System.Xml.Linq.resources.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/fr/Microsoft.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/fr/Microsoft.CSharp.resources.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/fr/System.Xml.Linq.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/fr/System.Xml.Linq.resources.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/it/Microsoft.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/it/Microsoft.CSharp.resources.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/it/System.Xml.Linq.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/it/System.Xml.Linq.resources.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/ja/Microsoft.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/ja/Microsoft.CSharp.resources.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/ja/System.Xml.Linq.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/ja/System.Xml.Linq.resources.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/ko/Microsoft.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/ko/Microsoft.CSharp.resources.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/ko/System.Xml.Linq.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/ko/System.Xml.Linq.resources.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/ru/Microsoft.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/ru/Microsoft.CSharp.resources.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/ru/System.Xml.Linq.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/ru/System.Xml.Linq.resources.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/zh-Hans/Microsoft.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/zh-Hans/Microsoft.CSharp.resources.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/zh-Hans/System.Xml.Linq.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/zh-Hans/System.Xml.Linq.resources.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/zh-Hant/Microsoft.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/zh-Hant/Microsoft.CSharp.resources.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/zh-Hant/System.Xml.Linq.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/sl5/zh-Hant/System.Xml.Linq.resources.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/win81/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/win81/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/win81/FluentAssertions.Core.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/win81/FluentAssertions.Core.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/win81/FluentAssertions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/win81/FluentAssertions.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/win81/FluentAssertions.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/win81/FluentAssertions.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/win81/FluentAssertions.pri: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/win81/FluentAssertions.pri -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/wp8/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/wp8/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/wp8/FluentAssertions.Core.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/wp8/FluentAssertions.Core.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/wp8/FluentAssertions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/wp8/FluentAssertions.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/wp8/FluentAssertions.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/wp8/FluentAssertions.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/wpa81/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/wpa81/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/wpa81/FluentAssertions.Core.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/wpa81/FluentAssertions.Core.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/wpa81/FluentAssertions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/wpa81/FluentAssertions.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/wpa81/FluentAssertions.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/wpa81/FluentAssertions.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/wpa81/FluentAssertions.pri: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/wpa81/FluentAssertions.pri -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/xamarin.ios/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/xamarin.ios/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/xamarin.ios/FluentAssertions.Core.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/FluentAssertions.4.5.0/lib/xamarin.ios/FluentAssertions.Core.pdb -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/Newtonsoft.Json.8.0.3/Newtonsoft.Json.8.0.3.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/Newtonsoft.Json.8.0.3/Newtonsoft.Json.8.0.3.nupkg -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/Newtonsoft.Json.8.0.3/lib/net20/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/Newtonsoft.Json.8.0.3/lib/net20/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/Newtonsoft.Json.8.0.3/lib/net35/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/Newtonsoft.Json.8.0.3/lib/net35/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/Newtonsoft.Json.8.0.3/lib/net40/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/Newtonsoft.Json.8.0.3/lib/net40/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/Newtonsoft.Json.8.0.3/lib/net45/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/Newtonsoft.Json.8.0.3/lib/net45/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/Newtonsoft.Json.8.0.3/lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/Newtonsoft.Json.8.0.3/lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/Newtonsoft.Json.8.0.3/lib/portable-net45+wp80+win8+wpa81+dnxcore50/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/Newtonsoft.Json.8.0.3/lib/portable-net45+wp80+win8+wpa81+dnxcore50/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/RestSharp.105.2.3.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/RestSharp.105.2.3.nupkg -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/MonoAndroid10/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/MonoAndroid10/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/MonoTouch10/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/MonoTouch10/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/Xamarin.iOS10/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/Xamarin.iOS10/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/net35/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/net35/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/net4-client/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/net4-client/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/net4/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/net4/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/net45/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/net45/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/net451/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/net451/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/net452/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/net452/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/net46/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/net46/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/sl5/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/sl5/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/windowsphone8/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/windowsphone8/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/windowsphone81/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/lib/windowsphone81/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/RestSharp.105.2.3/readme.txt: -------------------------------------------------------------------------------- 1 | *** IMPORTANT CHANGE IN RESTSHARP VERSION 103 *** 2 | 3 | In 103.0, JSON.NET was removed as a dependency. 4 | 5 | If this is still installed in your project and no other libraries depend on 6 | it you may remove it from your installed packages. 7 | 8 | There is one breaking change: the default Json*Serializer* is no longer 9 | compatible with Json.NET. To use Json.NET for serialization, copy the code 10 | from https://github.com/restsharp/RestSharp/blob/86b31f9adf049d7fb821de8279154f41a17b36f7/RestSharp/Serializers/JsonSerializer.cs 11 | and register it with your client: 12 | 13 | var client = new RestClient(); 14 | client.JsonSerializer = new YourCustomSerializer(); 15 | 16 | The default Json*Deserializer* is mostly compatible, but it does not support 17 | all features which Json.NET has (like the ability to support a custom [JsonConverter] 18 | by decorating a certain property with an attribute). If you need these features, you 19 | must take care of the deserialization yourself to get it working. 20 | 21 | -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/Selenium.Mozilla.Firefox.Webdriver.0.6.0/Driver/wires-0.6.0-win.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/Selenium.Mozilla.Firefox.Webdriver.0.6.0/Driver/wires-0.6.0-win.exe -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/Selenium.Mozilla.Firefox.Webdriver.0.6.0/Selenium.Mozilla.Firefox.Webdriver.0.6.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/Selenium.Mozilla.Firefox.Webdriver.0.6.0/Selenium.Mozilla.Firefox.Webdriver.0.6.0.nupkg -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/Selenium.Mozilla.Firefox.Webdriver.0.6.0/content/Readme.txt: -------------------------------------------------------------------------------- 1 | This is the Mozilla's webdriver for Firefox. Additional information at https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/Selenium.Mozilla.Firefox.Webdriver.0.6.0/tools/install.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | $driverFile = "MicrosoftWebDriver.exe" 4 | $label = "MicrosoftWebDriver" 5 | 6 | $markerFile = "README-$label.txt" 7 | $driverPath = Join-Path (Join-Path $installPath "driver") $driverFile 8 | 9 | $projectUri = [uri]$project.FullName; 10 | $drivertUri = [uri]$driverPath; 11 | $driverRelativePath = $projectUri.MakeRelative($drivertUri) -replace "/","\" 12 | 13 | # delete marker file. 14 | $project.ProjectItems.Item($markerFile).Delete() 15 | 16 | # Add content item as a link that is WebDriver binary saved at higher folder. 17 | # (This is normal case.) 18 | if ($driverRelativePath -like "..\*") { 19 | $project.ProjectItems.AddFromFile($driverPath) 20 | $project.ProjectItems.Item($driverFile).Properties.Item("CopyToOutputDirectory").Value = 2 21 | } 22 | $project.Save() 23 | 24 | # Treat the project file as a MSBuild script xml instead of DTEnv object model. 25 | Add-Type -AssemblyName 'Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 26 | $projectXml = ([Microsoft.Build.Evaluation.ProjectCollection]::GlobalProjectCollection.GetLoadedProjects($project.FullName) | select -First 1).Xml 27 | 28 | # Add content item as a link that is WebDriver binary saved at lower folder. 29 | # (This is the case that .csproj file and packages folder are in a same folder.) 30 | if ($driverRelativePath -notlike "..\*") { 31 | $itemGrp = $projectXml.CreateItemGroupElement() 32 | $projectXml.AppendChild($itemGrp) 33 | $item = $itemGrp.AddItem("Content", $driverRelativePath) 34 | $item.AddMetadata("Link", $driverFile) 35 | $item.AddMetadata("CopyToOutputDirectory", "PreserveNewest") 36 | } 37 | 38 | $project.Save() 39 | -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/Selenium.Mozilla.Firefox.Webdriver.0.6.0/tools/uninstall.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | $driverFile = "MicrosoftWebDriver.exe" 4 | $label = "MicrosoftWebDriver" 5 | 6 | $driverPath = Join-Path (Join-Path $installPath "driver") $driverFile 7 | 8 | $projectUri = [uri]$project.FullName; 9 | $drivertUri = [uri]$driverPath; 10 | $driverRelativePath = $projectUri.MakeRelative($drivertUri) -replace "/","\" 11 | 12 | # Delete content item that is WebDriver binary saved at higher folder. 13 | # (This is normal case.) 14 | if ($driverRelativePath -like "..\*") { 15 | $project.ProjectItems.Item($driverFile).Delete() 16 | $project.Save() 17 | } 18 | 19 | # Treat the project file as a MSBuild script xml instead of DTEnv object model. 20 | Add-Type -AssemblyName 'Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 21 | $projectXml = ([Microsoft.Build.Evaluation.ProjectCollection]::GlobalProjectCollection.GetLoadedProjects($project.FullName) | select -First 1).Xml 22 | 23 | # Delete content item that is WebDriver binary saved at lower folder. 24 | # (This is the case that .csproj file and packages folder are in a same folder.) 25 | if ($driverRelativePath -notlike "..\*") { 26 | $projectXml.Children | ` 27 | where { $_ -is [Microsoft.Build.Construction.ProjectItemGroupElement] } | ` 28 | foreach { $_.Children } | ` 29 | where { ($_.Children | where {$_.Name -eq "Link" -and $_.Value -eq $driverFile}) -ne $null } | ` 30 | foreach { 31 | $itemGrp = $_.Parent 32 | $itemGrp.RemoveChild($_) 33 | if ($itemGrp.Children.Count -eq 0) { $projectXml.RemoveChild($itemGrp) } 34 | } 35 | } 36 | 37 | $project.Save() 38 | -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/Selenium.Support.2.53.0/Selenium.Support.2.53.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/Selenium.Support.2.53.0/Selenium.Support.2.53.0.nupkg -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/Selenium.Support.2.53.0/lib/net35/WebDriver.Support.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/Selenium.Support.2.53.0/lib/net35/WebDriver.Support.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/Selenium.Support.2.53.0/lib/net40/WebDriver.Support.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/Selenium.Support.2.53.0/lib/net40/WebDriver.Support.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/Selenium.WebDriver.2.53.0/Selenium.WebDriver.2.53.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/Selenium.WebDriver.2.53.0/Selenium.WebDriver.2.53.0.nupkg -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/Selenium.WebDriver.2.53.0/lib/net35/WebDriver.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/Selenium.WebDriver.2.53.0/lib/net35/WebDriver.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/Selenium.WebDriver.2.53.0/lib/net40/WebDriver.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/PetClinic/packages/Selenium.WebDriver.2.53.0/lib/net40/WebDriver.dll -------------------------------------------------------------------------------- /c-sharp-rest/PetClinic/packages/repositories.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/README.md: -------------------------------------------------------------------------------- 1 | This example will run simulated test using GraphWalker started as a REST service. 2 | 3 | * Download [latest GraphWalker standalone jar](http://graphwalker.github.io/content/archive/graphwalker-cli-3.4.2.jar). 4 | * `git clone https://github.com/GraphWalker/graphwalker-example.git` 5 | * `cd c-sharp-rest/SmallModel` 6 | * Start GraphWalker as a restful service: `java -jar graphwalker-cli-3.4.2.jar -d all online -s RESTFUL -m SmallModel.graphml "random(edge_coverage(100))"`. 7 | * Build the SmallModel project.
8 | On linux: `xbuild ` 9 | * Run the program: 10 | On linux: `mono SmallModel/bin/Debug/SmallModel.exe` 11 | 12 | When run, the SmallModel program will connect to the GraphWalker service. 13 | 14 | It will then query the state machine in the GraphWalker service for steps to execute. The psuedo code would look something like the: 15 | ``` 16 | while hasNext() 17 | step = getNext() 18 | "Call method step in C# SmallModel class" 19 | invoke SmallModel.'step' 20 | print getData() 21 | ``` 22 | 23 | 24 | -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/SmallModel.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2012 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmallModel", "SmallModel\SmallModel.csproj", "{DA6DD90E-E6C6-417A-ADB2-BD9351258EC4}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|x86 = Debug|x86 9 | Release|x86 = Release|x86 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {DA6DD90E-E6C6-417A-ADB2-BD9351258EC4}.Debug|x86.ActiveCfg = Debug|x86 13 | {DA6DD90E-E6C6-417A-ADB2-BD9351258EC4}.Debug|x86.Build.0 = Debug|x86 14 | {DA6DD90E-E6C6-417A-ADB2-BD9351258EC4}.Release|x86.ActiveCfg = Release|x86 15 | {DA6DD90E-E6C6-417A-ADB2-BD9351258EC4}.Release|x86.Build.0 = Release|x86 16 | EndGlobalSection 17 | EndGlobal 18 | -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/SmallModel/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | 4 | // Information about this assembly is defined by the following attributes. 5 | // Change them to the values specific to your project. 6 | 7 | [assembly: AssemblyTitle ("SmallModel")] 8 | [assembly: AssemblyDescription ("")] 9 | [assembly: AssemblyConfiguration ("")] 10 | [assembly: AssemblyCompany ("")] 11 | [assembly: AssemblyProduct ("")] 12 | [assembly: AssemblyCopyright ("krikar")] 13 | [assembly: AssemblyTrademark ("")] 14 | [assembly: AssemblyCulture ("")] 15 | 16 | // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". 17 | // The form "{Major}.{Minor}.*" will automatically update the build and revision, 18 | // and "{Major}.{Minor}.{Build}.*" will update just the revision. 19 | 20 | [assembly: AssemblyVersion ("1.0.*")] 21 | 22 | // The following attributes are used to specify the signing key for the assembly, 23 | // if desired. See the Mono documentation for more information about signing. 24 | 25 | //[assembly: AssemblyDelaySign(false)] 26 | //[assembly: AssemblyKeyFile("")] 27 | 28 | -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/SmallModel/SmallModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace SmallModel 4 | { 5 | public class SmallModel 6 | { 7 | public void v_VerifySomeAction() 8 | { 9 | Console.WriteLine ("SmallModel.v_VerifySomeAction"); 10 | } 11 | 12 | public void v_VerifySomeOtherAction() 13 | { 14 | Console.WriteLine ("SmallModel.v_VerifySomeOtherAction"); 15 | } 16 | 17 | public void e_FirstAction() 18 | { 19 | Console.WriteLine ("SmallModel.e_FirstAction"); 20 | } 21 | 22 | public void e_AnotherAction() 23 | { 24 | Console.WriteLine ("SmallModel.e_AnotherAction"); 25 | } 26 | 27 | public void e_SomeOtherAction() 28 | { 29 | Console.WriteLine ("SmallModel.e_SomeOtherAction"); 30 | } 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/SmallModel/SmallModel.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Debug 5 | x86 6 | {DA6DD90E-E6C6-417A-ADB2-BD9351258EC4} 7 | Exe 8 | SmallModel 9 | SmallModel 10 | v4.5 11 | 12 | 13 | true 14 | full 15 | false 16 | bin\Debug 17 | DEBUG; 18 | prompt 19 | 4 20 | true 21 | x86 22 | 23 | 24 | full 25 | true 26 | bin\Release 27 | prompt 28 | 4 29 | true 30 | x86 31 | 32 | 33 | 34 | 35 | ..\packages\RestSharp.105.2.3\lib\net45\RestSharp.dll 36 | 37 | 38 | ..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/SmallModel/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/Newtonsoft.Json.8.0.3/Newtonsoft.Json.8.0.3.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/Newtonsoft.Json.8.0.3/Newtonsoft.Json.8.0.3.nupkg -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/Newtonsoft.Json.8.0.3/lib/net20/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/Newtonsoft.Json.8.0.3/lib/net20/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/Newtonsoft.Json.8.0.3/lib/net35/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/Newtonsoft.Json.8.0.3/lib/net35/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/Newtonsoft.Json.8.0.3/lib/net40/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/Newtonsoft.Json.8.0.3/lib/net40/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/Newtonsoft.Json.8.0.3/lib/net45/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/Newtonsoft.Json.8.0.3/lib/net45/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/Newtonsoft.Json.8.0.3/lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/Newtonsoft.Json.8.0.3/lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/Newtonsoft.Json.8.0.3/lib/portable-net45+wp80+win8+wpa81+dnxcore50/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/Newtonsoft.Json.8.0.3/lib/portable-net45+wp80+win8+wpa81+dnxcore50/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/RestSharp.105.2.3.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/RestSharp.105.2.3.nupkg -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/MonoAndroid10/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/MonoAndroid10/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/MonoTouch10/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/MonoTouch10/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/Xamarin.iOS10/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/Xamarin.iOS10/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/net35/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/net35/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/net4-client/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/net4-client/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/net4/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/net4/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/net45/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/net45/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/net451/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/net451/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/net452/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/net452/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/net46/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/net46/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/sl5/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/sl5/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/windowsphone8/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/windowsphone8/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/windowsphone81/RestSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/lib/windowsphone81/RestSharp.dll -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/RestSharp.105.2.3/readme.txt: -------------------------------------------------------------------------------- 1 | *** IMPORTANT CHANGE IN RESTSHARP VERSION 103 *** 2 | 3 | In 103.0, JSON.NET was removed as a dependency. 4 | 5 | If this is still installed in your project and no other libraries depend on 6 | it you may remove it from your installed packages. 7 | 8 | There is one breaking change: the default Json*Serializer* is no longer 9 | compatible with Json.NET. To use Json.NET for serialization, copy the code 10 | from https://github.com/restsharp/RestSharp/blob/86b31f9adf049d7fb821de8279154f41a17b36f7/RestSharp/Serializers/JsonSerializer.cs 11 | and register it with your client: 12 | 13 | var client = new RestClient(); 14 | client.JsonSerializer = new YourCustomSerializer(); 15 | 16 | The default Json*Deserializer* is mostly compatible, but it does not support 17 | all features which Json.NET has (like the ability to support a custom [JsonConverter] 18 | by decorating a certain property with an attribute). If you need these features, you 19 | must take care of the deserialization yourself to get it working. 20 | 21 | -------------------------------------------------------------------------------- /c-sharp-rest/SmallModel/packages/repositories.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /c-sharp-websocket/SmallModel/README.md: -------------------------------------------------------------------------------- 1 | This example will run simulated test using GraphWalker started as a WebSocket service. 2 | 3 | * Download [latest GraphWalker standalone jar](http://graphwalker.github.io/content/archive/graphwalker-cli-3.4.2.jar). 4 | * Start GraphWalker as a WebSocker service: `java -jar graphwalker-cli-3.4.2.jar -d all online`. 5 | * `git clone https://github.com/GraphWalker/graphwalker-example.git` 6 | * `cd c-sharp-websocket/SmallModel` 7 | * Build the SmallModel project.
8 | On linux: `xbuild ` 9 | * Run the program: 10 | On linux: `mono SmallModel/bin/Debug/SmallModel.exe` 11 | 12 | When run, the SmallModel program will connect to the GraphWalker service, and load a [model in JSON notation](http://graphwalker.org/docs/json_graph). 13 | ![Alt text](/c-sharp-websocket/SmallModel/SmallModel.png?raw=true "The model") 14 | 15 | It will then start the state machine in the GraphWalker service, and query it for steps to execute. The psuedo code would look something like the: 16 | ``` 17 | while hasNext() 18 | step = getNext() 19 | "Call method step in C# SmallModel class" 20 | invoke SmallModel.'step' 21 | print getData() 22 | ``` 23 | 24 | 25 | -------------------------------------------------------------------------------- /c-sharp-websocket/SmallModel/SmallModel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-websocket/SmallModel/SmallModel.png -------------------------------------------------------------------------------- /c-sharp-websocket/SmallModel/SmallModel.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2012 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmallModel", "SmallModel\SmallModel.csproj", "{43FCE714-1F0F-4D78-B267-3CCFDD63433A}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|x86 = Debug|x86 9 | Release|x86 = Release|x86 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {43FCE714-1F0F-4D78-B267-3CCFDD63433A}.Debug|x86.ActiveCfg = Debug|x86 13 | {43FCE714-1F0F-4D78-B267-3CCFDD63433A}.Debug|x86.Build.0 = Debug|x86 14 | {43FCE714-1F0F-4D78-B267-3CCFDD63433A}.Release|x86.ActiveCfg = Release|x86 15 | {43FCE714-1F0F-4D78-B267-3CCFDD63433A}.Release|x86.Build.0 = Release|x86 16 | EndGlobalSection 17 | EndGlobal 18 | -------------------------------------------------------------------------------- /c-sharp-websocket/SmallModel/SmallModel/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | 4 | // Information about this assembly is defined by the following attributes. 5 | // Change them to the values specific to your project. 6 | 7 | [assembly: AssemblyTitle ("SmallModel")] 8 | [assembly: AssemblyDescription ("")] 9 | [assembly: AssemblyConfiguration ("")] 10 | [assembly: AssemblyCompany ("")] 11 | [assembly: AssemblyProduct ("")] 12 | [assembly: AssemblyCopyright ("krikar")] 13 | [assembly: AssemblyTrademark ("")] 14 | [assembly: AssemblyCulture ("")] 15 | 16 | // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". 17 | // The form "{Major}.{Minor}.*" will automatically update the build and revision, 18 | // and "{Major}.{Minor}.{Build}.*" will update just the revision. 19 | 20 | [assembly: AssemblyVersion ("1.0.*")] 21 | 22 | // The following attributes are used to specify the signing key for the assembly, 23 | // if desired. See the Mono documentation for more information about signing. 24 | 25 | //[assembly: AssemblyDelaySign(false)] 26 | //[assembly: AssemblyKeyFile("")] 27 | 28 | -------------------------------------------------------------------------------- /c-sharp-websocket/SmallModel/SmallModel/SmallModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace SmallModel 4 | { 5 | public class SmallModel 6 | { 7 | public void v_VerifySomeAction() 8 | { 9 | Console.WriteLine ("SmallModel.v_VerifySomeAction"); 10 | } 11 | 12 | public void v_VerifySomeOtherAction() 13 | { 14 | Console.WriteLine ("SmallModel.v_VerifySomeOtherAction"); 15 | } 16 | 17 | public void e_FirstAction() 18 | { 19 | Console.WriteLine ("SmallModel.e_FirstAction"); 20 | } 21 | 22 | public void e_AnotherAction() 23 | { 24 | Console.WriteLine ("SmallModel.e_AnotherAction"); 25 | } 26 | 27 | public void e_SomeOtherAction() 28 | { 29 | Console.WriteLine ("SmallModel.e_SomeOtherAction"); 30 | } 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /c-sharp-websocket/SmallModel/SmallModel/SmallModel.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Debug 5 | x86 6 | {43FCE714-1F0F-4D78-B267-3CCFDD63433A} 7 | Exe 8 | SmallModel 9 | SmallModel 10 | v4.5 11 | 12 | 13 | true 14 | full 15 | false 16 | bin\Debug 17 | DEBUG; 18 | prompt 19 | 4 20 | true 21 | x86 22 | 23 | 24 | full 25 | true 26 | bin\Release 27 | prompt 28 | 4 29 | true 30 | x86 31 | 32 | 33 | 34 | 35 | ..\packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll 36 | 37 | 38 | ..\packages\Alchemy.2.2.1\lib\net40\Alchemy.dll 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /c-sharp-websocket/SmallModel/SmallModel/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /c-sharp-websocket/SmallModel/packages/Alchemy.2.2.1/Alchemy.2.2.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-websocket/SmallModel/packages/Alchemy.2.2.1/Alchemy.2.2.1.nupkg -------------------------------------------------------------------------------- /c-sharp-websocket/SmallModel/packages/Alchemy.2.2.1/lib/net40/Alchemy.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-websocket/SmallModel/packages/Alchemy.2.2.1/lib/net40/Alchemy.dll -------------------------------------------------------------------------------- /c-sharp-websocket/SmallModel/packages/Newtonsoft.Json.6.0.8/Newtonsoft.Json.6.0.8.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-websocket/SmallModel/packages/Newtonsoft.Json.6.0.8/Newtonsoft.Json.6.0.8.nupkg -------------------------------------------------------------------------------- /c-sharp-websocket/SmallModel/packages/Newtonsoft.Json.6.0.8/lib/net20/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-websocket/SmallModel/packages/Newtonsoft.Json.6.0.8/lib/net20/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-websocket/SmallModel/packages/Newtonsoft.Json.6.0.8/lib/net35/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-websocket/SmallModel/packages/Newtonsoft.Json.6.0.8/lib/net35/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-websocket/SmallModel/packages/Newtonsoft.Json.6.0.8/lib/net40/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-websocket/SmallModel/packages/Newtonsoft.Json.6.0.8/lib/net40/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-websocket/SmallModel/packages/Newtonsoft.Json.6.0.8/lib/net45/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-websocket/SmallModel/packages/Newtonsoft.Json.6.0.8/lib/net45/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-websocket/SmallModel/packages/Newtonsoft.Json.6.0.8/lib/netcore45/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-websocket/SmallModel/packages/Newtonsoft.Json.6.0.8/lib/netcore45/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-websocket/SmallModel/packages/Newtonsoft.Json.6.0.8/lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-websocket/SmallModel/packages/Newtonsoft.Json.6.0.8/lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-websocket/SmallModel/packages/Newtonsoft.Json.6.0.8/lib/portable-net45+wp80+win8+wpa81+aspnetcore50/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-websocket/SmallModel/packages/Newtonsoft.Json.6.0.8/lib/portable-net45+wp80+win8+wpa81+aspnetcore50/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /c-sharp-websocket/SmallModel/packages/repositories.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /c-sharp-websocket/gw3-client/SmallModel.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "loadModel", 3 | "model": { 4 | "name": "Small model", 5 | "generator": "random(edge_coverage(100))", 6 | "vertices": [ 7 | { 8 | "name": "v_VerifySomeAction", 9 | "id": "n0" 10 | }, 11 | { 12 | "name": "v_VerifySomeOtherAction", 13 | "id": "n1" 14 | } 15 | ], 16 | "edges": [ 17 | { 18 | "name": "e_FirstAction", 19 | "id": "e0", 20 | "dstVertexId": "n0", 21 | "startElement": "true", 22 | "actions": [ 23 | { 24 | "action": "x=0;" 25 | }, 26 | { 27 | "action": "y=0;" 28 | } 29 | ] 30 | }, 31 | { 32 | "name": "e_AnotherAction", 33 | "id": "e1", 34 | "srcVertexId": "n0", 35 | "dstVertexId": "n1", 36 | "actions": [ 37 | { 38 | "action": "y+=1;" 39 | } 40 | ] 41 | }, 42 | { 43 | "name": "e_SomeOtherAction", 44 | "id": "e2", 45 | "srcVertexId": "n1", 46 | "dstVertexId": "n1", 47 | "actions": [ 48 | { 49 | "action": "x+=1;" 50 | } 51 | ] 52 | }, 53 | { 54 | "name": "e_SomeOtherAction", 55 | "id": "e3", 56 | "srcVertexId": "n1", 57 | "dstVertexId": "n0", 58 | "actions": [ 59 | { 60 | "action": "y+=1;" 61 | } 62 | ] 63 | } 64 | ] 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /c-sharp-websocket/gw3-client/gw3-client.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2012 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "gw3-client", "gw3-client\gw3-client.csproj", "{FCE6FF58-8220-4CB6-9B48-6464E3EEDA38}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|x86 = Debug|x86 9 | Release|x86 = Release|x86 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {FCE6FF58-8220-4CB6-9B48-6464E3EEDA38}.Debug|x86.ActiveCfg = Debug|x86 13 | {FCE6FF58-8220-4CB6-9B48-6464E3EEDA38}.Debug|x86.Build.0 = Debug|x86 14 | {FCE6FF58-8220-4CB6-9B48-6464E3EEDA38}.Release|x86.ActiveCfg = Release|x86 15 | {FCE6FF58-8220-4CB6-9B48-6464E3EEDA38}.Release|x86.Build.0 = Release|x86 16 | EndGlobalSection 17 | EndGlobal 18 | -------------------------------------------------------------------------------- /c-sharp-websocket/gw3-client/gw3-client/MainWindow.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Gtk; 3 | using Alchemy; 4 | using Alchemy.Classes; 5 | 6 | public partial class MainWindow: Gtk.Window 7 | { 8 | WebSocketClient ws = null; 9 | 10 | public MainWindow () : base (Gtk.WindowType.Toplevel) 11 | { 12 | Build (); 13 | host.Text = "ws://localhost:8887/"; 14 | } 15 | 16 | protected void OnDeleteEvent (object sender, DeleteEventArgs a) 17 | { 18 | ws.Disconnect (); 19 | Application.Quit (); 20 | a.RetVal = true; 21 | } 22 | 23 | protected void onConnectToggled (object sender, EventArgs e) 24 | { 25 | ToggleButton connectBtn = sender as ToggleButton; 26 | if (connectBtn.Active) { 27 | if (createSocket ()) { 28 | enableWidgets (true); 29 | ws.Connect (); 30 | connectBtn.Label = "Connected"; 31 | } else { 32 | connectBtn.Active = false; 33 | } 34 | } else { 35 | enableWidgets (false); 36 | if (ws != null) { 37 | ws.Disconnect (); 38 | } 39 | connectBtn.Label = "Connect"; 40 | } 41 | } 42 | 43 | protected void enableWidgets (bool enable) 44 | { 45 | modelFilePicker.Sensitive = enable; 46 | getNext.Sensitive = enable; 47 | hasNext.Sensitive = enable; 48 | getData.Sensitive = enable; 49 | } 50 | 51 | protected void logText (string text) 52 | { 53 | Gtk.Application.Invoke (delegate { 54 | TextIter mIter = log.Buffer.EndIter; 55 | log.Buffer.Insert (ref mIter, text); 56 | log.Buffer.Insert (ref mIter, System.Environment.NewLine); 57 | log.ScrollToIter (log.Buffer.EndIter, 0, false, 0, 0); 58 | }); 59 | } 60 | 61 | protected bool createSocket () 62 | { 63 | if (string.IsNullOrEmpty (host.Text)) { 64 | logText ("No host name"); 65 | return false; 66 | } 67 | try { 68 | ws = new WebSocketClient (host.Text) { 69 | OnReceive = OnReceive, 70 | OnDisconnect = OnDisconnect 71 | }; 72 | return true; 73 | } catch (System.Exception e) { 74 | logText ("Not a valid host name: " + e.Message); 75 | return false; 76 | } 77 | } 78 | 79 | void OnReceive (UserContext context) 80 | { 81 | logText (context.DataFrame.ToString ()); 82 | } 83 | 84 | void OnDisconnect (UserContext context) 85 | { 86 | logText (context.DataFrame.ToString ()); 87 | } 88 | 89 | protected void onGetNext (object sender, EventArgs e) 90 | { 91 | ws.Send ("{\"command\":\"getNext\"}"); 92 | } 93 | 94 | protected void OnHasNext (object sender, EventArgs e) 95 | { 96 | ws.Send ("{\"command\":\"hasNext\"}"); 97 | } 98 | 99 | protected void OnGetData (object sender, EventArgs e) 100 | { 101 | ws.Send ("{\"command\":\"getData\"}"); 102 | } 103 | 104 | protected void OnModelSelectionChanged (object sender, EventArgs e) 105 | { 106 | ws.Send ( "{\"command\":\"start\", \"gw3\": { \"models\":[" + 107 | System.IO.File.ReadAllText (modelFilePicker.Filename) + 108 | "]}}" ); 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /c-sharp-websocket/gw3-client/gw3-client/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Gtk; 3 | 4 | namespace bar 5 | { 6 | class MainClass 7 | { 8 | public static void Main (string[] args) 9 | { 10 | Application.Init (); 11 | MainWindow win = new MainWindow (); 12 | win.Show (); 13 | Application.Run (); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /c-sharp-websocket/gw3-client/gw3-client/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | 4 | // Information about this assembly is defined by the following attributes. 5 | // Change them to the values specific to your project. 6 | 7 | [assembly: AssemblyTitle ("gw3-client")] 8 | [assembly: AssemblyDescription ("")] 9 | [assembly: AssemblyConfiguration ("")] 10 | [assembly: AssemblyCompany ("")] 11 | [assembly: AssemblyProduct ("")] 12 | [assembly: AssemblyCopyright ("krikar")] 13 | [assembly: AssemblyTrademark ("")] 14 | [assembly: AssemblyCulture ("")] 15 | 16 | // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". 17 | // The form "{Major}.{Minor}.*" will automatically update the build and revision, 18 | // and "{Major}.{Minor}.{Build}.*" will update just the revision. 19 | 20 | [assembly: AssemblyVersion ("1.0.*")] 21 | 22 | // The following attributes are used to specify the signing key for the assembly, 23 | // if desired. See the Mono documentation for more information about signing. 24 | 25 | //[assembly: AssemblyDelaySign(false)] 26 | //[assembly: AssemblyKeyFile("")] 27 | 28 | -------------------------------------------------------------------------------- /c-sharp-websocket/gw3-client/gw3-client/gtk-gui/generated.cs: -------------------------------------------------------------------------------- 1 | 2 | // This file has been generated by the GUI designer. Do not modify. 3 | namespace Stetic 4 | { 5 | internal class Gui 6 | { 7 | private static bool initialized; 8 | 9 | internal static void Initialize (Gtk.Widget iconRenderer) 10 | { 11 | if ((Stetic.Gui.initialized == false)) { 12 | Stetic.Gui.initialized = true; 13 | } 14 | } 15 | } 16 | 17 | internal class ActionGroups 18 | { 19 | public static Gtk.ActionGroup GetActionGroup (System.Type type) 20 | { 21 | return Stetic.ActionGroups.GetActionGroup (type.FullName); 22 | } 23 | 24 | public static Gtk.ActionGroup GetActionGroup (string name) 25 | { 26 | return null; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /c-sharp-websocket/gw3-client/gw3-client/gw3-client.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Debug 5 | x86 6 | {FCE6FF58-8220-4CB6-9B48-6464E3EEDA38} 7 | WinExe 8 | gw3-client 9 | gw3-client 10 | v4.5 11 | 12 | 13 | true 14 | full 15 | false 16 | bin\Debug 17 | DEBUG; 18 | prompt 19 | 4 20 | false 21 | x86 22 | 23 | 24 | full 25 | true 26 | bin\Release 27 | prompt 28 | 4 29 | false 30 | x86 31 | 32 | 33 | 34 | 35 | False 36 | gtk-sharp-2.0 37 | 38 | 39 | False 40 | gtk-sharp-2.0 41 | 42 | 43 | False 44 | glib-sharp-2.0 45 | 46 | 47 | False 48 | glade-sharp-2.0 49 | 50 | 51 | False 52 | gtk-sharp-2.0 53 | 54 | 55 | False 56 | gtk-sharp-2.0 57 | 58 | 59 | 60 | ..\packages\Alchemy.2.2.1\lib\net40\Alchemy.dll 61 | 62 | 63 | 64 | 65 | gui.stetic 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /c-sharp-websocket/gw3-client/gw3-client/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /c-sharp-websocket/gw3-client/packages/Alchemy.2.2.1/Alchemy.2.2.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-websocket/gw3-client/packages/Alchemy.2.2.1/Alchemy.2.2.1.nupkg -------------------------------------------------------------------------------- /c-sharp-websocket/gw3-client/packages/Alchemy.2.2.1/lib/net40/Alchemy.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/c-sharp-websocket/gw3-client/packages/Alchemy.2.2.1/lib/net40/Alchemy.dll -------------------------------------------------------------------------------- /c-sharp-websocket/gw3-client/packages/repositories.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /command-line-scripts/run-RESTFUL-Test.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # How to test this script: 4 | # ======================== 5 | # 6 | # Run this script: 7 | # bash run-RESTFUL-Test.bash 8 | # 9 | # The script will download the graphwalker jar and and example model 10 | # to the current folder and execute that using the RESTFUL service. 11 | # 12 | # 13 | 14 | 15 | 16 | # Check if dependecy command exists 17 | command -v curl >/dev/null 2>&1 || { echo >&2 "Script requires curl but it's not installed. Aborting."; exit 1; } 18 | command -v java >/dev/null 2>&1 || { echo >&2 "Script requires java but it's not installed. Aborting."; exit 1; } 19 | command -v wget >/dev/null 2>&1 || { echo >&2 "Script requires wget but it's not installed. Aborting."; exit 1; } 20 | command -v jq >/dev/null 2>&1 || { echo >&2 "Script requires jq but it's not installed. Aborting."; exit 1; } 21 | 22 | 23 | 24 | # Run if control-c 25 | control_c() 26 | { 27 | echo -en "\n*** Caught ctrl+c! Exiting ***\n" 28 | kill $PID 29 | exit $? 30 | } 31 | 32 | # trap keyboard interrupt (control-c) 33 | trap control_c SIGINT 34 | 35 | 36 | # Get the latest graphwalker jar 37 | VERSION=4.3.0 38 | GW_JAR=graphwalker-cli-$VERSION.jar 39 | if [ ! -f $GW_JAR ] 40 | then 41 | wget https://github.com/GraphWalker/graphwalker-project/releases/download/$VERSION/$GW_JAR 42 | fi 43 | 44 | 45 | 46 | # Launch graphwalker, and redirect stderr and stdout to gw.log 47 | java -jar $GW_JAR -d all online --service RESTFUL > gw.log 2>&1 & 48 | PID=$! 49 | 50 | # Wait until graphwalker has started 51 | sh -c 'tail -n +0 --pid=$$ -f gw.log | { sed "/Press Control/ q" && kill $$ ;}' 52 | echo "GraphWalker REST started" 53 | 54 | # Get the model file 55 | GW_MODEL=PetClinic.json 56 | if [ ! -f $GW_MODEL ] 57 | then 58 | wget https://raw.githubusercontent.com/GraphWalker/graphwalker-example/master/java-petclinic/src/main/resources/com/company/$GW_MODEL 59 | fi 60 | 61 | # Upload model file to service 62 | RESULT=$(curl -s -H "Content-Type: text/plain;charset=UTF-8" -X POST -d @$GW_MODEL http://localhost:8887/graphwalker/load | jq -r .result) 63 | 64 | # Check result 65 | if [[ $RESULT != "ok" ]] 66 | then 67 | kill $PID 68 | exit 69 | fi 70 | 71 | # While the model is not exhausted 72 | while [[ $(curl -s http://localhost:8887/graphwalker/hasNext | jq -r .hasNext) == "true" ]] 73 | do 74 | # Get the next element to execute 75 | GETNEXT=$(curl -s http://localhost:8887/graphwalker/getNext | jq -r .currentElementName) 76 | echo "Will exectute: $GETNEXT" 77 | 78 | # Get the data in the model,if any 79 | DATA=$(curl -s http://localhost:8887/graphwalker/getData | jq -r .data) 80 | echo "Current state of data: $DATA" 81 | done 82 | 83 | kill $PID 84 | -------------------------------------------------------------------------------- /html-websocket/gw3-client.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | GraphWalker 3 WebSocket Client 5 | 6 | 7 | 8 | 9 | 60 | 61 | 62 |

63 |

64 |

65 | 66 | 67 | -------------------------------------------------------------------------------- /java-algorithm/pom.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 4.0.0 6 | 7 | 8 | graphwalker-example 9 | org.graphwalker.example 10 | 4.3.2 11 | 12 | 13 | java-algorithm 14 | GraphWalker Algorithm Example 15 | 16 | 17 | 18 | org.graphwalker 19 | graphwalker-java 20 | ${project.version} 21 | 22 | 23 | 24 | 25 | 26 | 27 | org.graphwalker 28 | graphwalker-maven-plugin 29 | ${project.version} 30 | 31 | 32 | 33 | test 34 | test 35 | 36 | test 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /java-algorithm/src/main/java/com/company/MyPathGenerator.java: -------------------------------------------------------------------------------- 1 | package com.company; 2 | 3 | import org.graphwalker.core.condition.StopCondition; 4 | import org.graphwalker.core.generator.PathGeneratorBase; 5 | import org.graphwalker.core.machine.Context; 6 | import org.graphwalker.core.model.Element; 7 | 8 | import static org.graphwalker.core.model.Edge.RuntimeEdge; 9 | import static org.graphwalker.core.model.Vertex.RuntimeVertex; 10 | 11 | /** 12 | * @author Nils Olsson 13 | */ 14 | public class MyPathGenerator extends PathGeneratorBase { 15 | 16 | private int index = 0; 17 | 18 | public MyPathGenerator(StopCondition stopCondition) { 19 | setStopCondition(stopCondition); 20 | } 21 | 22 | @Override 23 | public Context getNextStep() { 24 | Context context = getContext(); 25 | Element element = context.getCurrentElement(); 26 | if (null == element) { 27 | element = context.getNextElement(); 28 | } 29 | if (element instanceof RuntimeVertex) { 30 | return context.setCurrentElement(getContext().getAlgorithm(MyReverseAlgorithm.class).getEdges().get(index++)); 31 | } else { 32 | return context.setCurrentElement(((RuntimeEdge) element).getTargetVertex()); 33 | } 34 | } 35 | 36 | @Override 37 | public boolean hasNextStep() { 38 | return !getStopCondition().isFulfilled(); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /java-algorithm/src/main/java/com/company/MyReverseAlgorithm.java: -------------------------------------------------------------------------------- 1 | package com.company; 2 | 3 | import org.graphwalker.core.algorithm.Algorithm; 4 | import org.graphwalker.core.machine.Context; 5 | import org.graphwalker.core.model.Edge; 6 | 7 | import java.util.ArrayList; 8 | import java.util.Collections; 9 | import java.util.Comparator; 10 | import java.util.List; 11 | 12 | /** 13 | * @author Nils Olsson 14 | */ 15 | public class MyReverseAlgorithm implements Algorithm { 16 | 17 | private final Context context; 18 | private List edges = new ArrayList<>(); 19 | 20 | public MyReverseAlgorithm(Context context) { 21 | this.context = context; 22 | doSomeWork(); 23 | } 24 | 25 | public void doSomeWork() { 26 | edges.addAll(context.getModel().getEdges()); 27 | Collections.sort(edges, new Comparator() { 28 | @Override 29 | public int compare(Edge.RuntimeEdge edge1, Edge.RuntimeEdge edge2) { 30 | return edge2.getId().compareTo(edge1.getId()); 31 | } 32 | }); 33 | } 34 | 35 | public List getEdges() { 36 | return edges; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /java-algorithm/src/main/java/com/company/MyTest.java: -------------------------------------------------------------------------------- 1 | package com.company; 2 | 3 | import org.graphwalker.core.condition.EdgeCoverage; 4 | import org.graphwalker.core.machine.ExecutionContext; 5 | import org.graphwalker.core.model.Edge; 6 | import org.graphwalker.core.model.Model; 7 | import org.graphwalker.core.model.Vertex; 8 | import org.graphwalker.java.annotation.GraphWalker; 9 | import org.slf4j.Logger; 10 | import org.slf4j.LoggerFactory; 11 | 12 | 13 | /** 14 | * @author Nils Olsson 15 | */ 16 | @GraphWalker(pathGenerator = MyPathGenerator.class, stopCondition = EdgeCoverage.class) 17 | public class MyTest extends ExecutionContext { 18 | 19 | private Logger LOG = LoggerFactory.getLogger(MyTest.class); 20 | 21 | public MyTest() { 22 | Model model = new Model(); 23 | Vertex vertex = new Vertex(); 24 | for (int i = 0; i < 10; i++) { 25 | model.addEdge(new Edge() 26 | .setSourceVertex(vertex) 27 | .setTargetVertex(vertex).setId(String.valueOf(i)) 28 | .setName("execute1")); 29 | } 30 | setNextElement(vertex); 31 | setModel(model.build()); 32 | } 33 | 34 | public void execute1() { 35 | LOG.info(getCurrentElement().getId()); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /java-algorithm/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d{HH:mm:ss.SSS} [%thread] [%X{trace}] %-5level %logger{20} - %msg%n 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /java-amazon/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-amazon/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /java-amazon/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.3/apache-maven-3.8.3-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /java-amazon/README.md: -------------------------------------------------------------------------------- 1 | This is a test that runs on the Amazon web site. 2 | 3 | Run the test using maven: 4 | 5 | ``` 6 | ./mvnw graphwalker:test 7 | ``` 8 | 9 | Documentation is here: https://github.com/GraphWalker/graphwalker-project/wiki/Amazon-Shopping-Cart 10 | -------------------------------------------------------------------------------- /java-amazon/build/reports/tests/1613982554107.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-amazon/build/reports/tests/1613982554107.0.png -------------------------------------------------------------------------------- /java-amazon/build/reports/tests/1613982994055.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-amazon/build/reports/tests/1613982994055.0.png -------------------------------------------------------------------------------- /java-amazon/build/reports/tests/1613983242167.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-amazon/build/reports/tests/1613983242167.0.png -------------------------------------------------------------------------------- /java-amazon/build/reports/tests/1614242647045.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-amazon/build/reports/tests/1614242647045.0.png -------------------------------------------------------------------------------- /java-amazon/build/reports/tests/1660719679822.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-amazon/build/reports/tests/1660719679822.0.png -------------------------------------------------------------------------------- /java-amazon/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 27 | 29 | 30 | 4.0.0 31 | 32 | 33 | graphwalker-example 34 | org.graphwalker.example 35 | 4.3.2 36 | 37 | 38 | java-amazon 39 | GraphWalker Amazon Example 40 | 41 | 42 | 43 | org.graphwalker 44 | graphwalker-core 45 | ${project.version} 46 | 47 | 48 | org.graphwalker 49 | graphwalker-java 50 | ${project.version} 51 | 52 | 53 | com.codeborne 54 | selenide 55 | 6.7.2 56 | 57 | 58 | junit 59 | junit 60 | 4.13.2 61 | 62 | 63 | 64 | 65 | 66 | 67 | org.graphwalker 68 | graphwalker-maven-plugin 69 | ${project.version} 70 | 71 | 72 | 73 | generate-sources 74 | generate-sources 75 | 76 | generate-sources 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /java-amazon/src/main/java/org/graphwalker/ShoppingCartTest.java: -------------------------------------------------------------------------------- 1 | package org.graphwalker; 2 | 3 | import com.codeborne.selenide.CollectionCondition; 4 | import org.graphwalker.core.machine.ExecutionContext; 5 | import org.graphwalker.java.annotation.AfterExecution; 6 | import org.graphwalker.java.annotation.BeforeExecution; 7 | import org.graphwalker.java.annotation.GraphWalker; 8 | import org.junit.Assert; 9 | import org.slf4j.Logger; 10 | import org.slf4j.LoggerFactory; 11 | 12 | import static com.codeborne.selenide.Condition.*; 13 | import static com.codeborne.selenide.Configuration.browser; 14 | import static com.codeborne.selenide.Selenide.*; 15 | 16 | @GraphWalker() 17 | public class ShoppingCartTest extends ExecutionContext implements ShoppingCart { 18 | 19 | private static final Logger logger = LoggerFactory.getLogger(ShoppingCartTest.class); 20 | Integer numberOfAddedBooksByProgram = 0; 21 | 22 | @BeforeExecution 23 | public void setup() { 24 | logger.info("Setup happens here"); 25 | browser = "firefox"; 26 | } 27 | 28 | @AfterExecution 29 | public void cleanup() { 30 | logger.info("Cleanup happens here"); 31 | } 32 | 33 | public void e_ClickBook() { 34 | $$("[data-component-type='s-search-result']").findBy(text("Practical Model-Based Testing: A Tools Approach")).shouldBe(visible).click(); 35 | } 36 | 37 | public void e_AddBookToCart() { 38 | $("#mediaTab_heading_2").shouldBe(visible).click(); 39 | $("[title='Add to Shopping Cart']").click(); 40 | logger.debug("Number of added books by test: " + ++numberOfAddedBooksByProgram); 41 | } 42 | 43 | public void v_BookInformation() { 44 | $("#productTitle").shouldHave(text("Practical Model-Based Testing: A Tools Approach")); 45 | } 46 | 47 | public void v_AddedToCart() { 48 | $("h1.a-text-bold").shouldHave(text("Added to Cart")); 49 | } 50 | 51 | public void v_SearchResult() { 52 | $$("[data-component-type='s-search-result']").filter(visible).shouldHave(CollectionCondition.sizeGreaterThan(5)); 53 | $$("[data-component-type='s-search-result']").findBy(text("Practical Model-Based Testing: A Tools Approach")).shouldBe(visible); 54 | } 55 | 56 | public void v_ShoppingCart() { 57 | Integer expected_num_of_books_by_graphwalker = getAttribute("num_of_books").asInt(); 58 | 59 | // The number of books should be equal both in the model, and in this program 60 | Assert.assertEquals(expected_num_of_books_by_graphwalker, numberOfAddedBooksByProgram); 61 | 62 | 63 | if (expected_num_of_books_by_graphwalker == 0) { 64 | $(".sc-your-amazon-cart-is-empty").shouldHave(text("Your Amazon Cart is empty")); 65 | return; 66 | } 67 | 68 | $("h1").shouldHave(text("Shopping Cart")); 69 | $("#sc-subtotal-label-activecart").shouldHave(text("Subtotal (" + expected_num_of_books_by_graphwalker.toString() + " item")); 70 | } 71 | 72 | public void e_EnterBaseURL() { 73 | open("http://www.amazon.com"); 74 | } 75 | 76 | public void v_Amazon() { 77 | $(".nav-search-field input[type='text']").shouldBe(visible); 78 | } 79 | 80 | 81 | public void e_SearchBook() { 82 | $(".nav-search-field input[type='text']").shouldBe(visible); 83 | $(".nav-search-field input[type='text']").sendKeys("'Practical Model-Based Testing: A Tools Approach'"); 84 | $("#nav-search-submit-button").click(); 85 | } 86 | 87 | public void e_ShoppingCart() { 88 | $("#nav-cart-count-container").shouldBe(visible).click(); 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /java-amazon/src/main/resources/org/graphwalker/ShoppingCart.json: -------------------------------------------------------------------------------- 1 | {"models":[{"name":"ShoppingCart","id":"c0bf6a8e-91ef-40db-a68a-7aa7ec1ce9b0","generator":"random(edge_coverage(100))","actions":["num_of_books = 0"],"vertices":[{"id":"n2","name":"v_Amazon","actions":[],"requirements":["UC01 2.2.1"],"properties":{"x":-10.412944615028449,"y":115.66708390015405,"description":"Verify that Amazon's home page is properly displayed."}},{"id":"n3","name":"v_SearchResult","actions":[],"requirements":["UC01 2.2.2"],"properties":{"x":-100.57134021381405,"y":275.55366784960654,"description":"Verify that in the search result list, the book 'Practical Model-Based Testing: A Tools Approach by Mark Utting and Bruno Legeard' exists."}},{"id":"n4","name":"v_BookInformation","actions":[],"requirements":["UC01 2.2.3"],"properties":{"x":287.8014072034673,"y":284.42800707215497,"description":"Verify that the page displaing detailed information regarding '\nPractical Model-Based Testing: A Tools Approach' is correct."}},{"id":"n5","name":"v_AddedToCart","actions":[],"requirements":[],"properties":{"x":328.72195483010915,"y":528.2200675843254,"description":"Verify that the page 'Shopping Cart' now displays information 'Customers Who Bought Practical Model-Based Testing: A Tools Approach Also Bought'"}},{"id":"n6","name":"v_ShoppingCart","actions":[],"requirements":["UC01 2.3"],"properties":{"x":141.72632998511904,"y":648.7913147941468,"description":"Verify that the shopping cart page is displayed properly. The correct amount of added books should be: {$num_of_books}"}}],"edges":[{"id":"e10","name":"e_SearchBook","actions":[],"requirements":[],"properties":{"description":"In the search field, enter 'Model-based testing', and press enter."},"sourceVertexId":"n4","targetVertexId":"n3"},{"id":"c2a189b6-bd93-4fa8-a32a-c5d0aafe4a0a","name":"e_EnterBaseURL","actions":[],"requirements":[],"properties":[],"sourceVertexId":"n2","targetVertexId":"n2"},{"id":"e2","name":"e_SearchBook","actions":[],"requirements":[],"properties":{"description":"In the search field, enter 'Model-based testing', and press enter."},"sourceVertexId":"n2","targetVertexId":"n3"},{"id":"e3","name":"e_ClickBook","actions":[],"requirements":[],"properties":{"description":"Click the link '\nPractical Model-Based Testing: A Tools Approach'"},"sourceVertexId":"n3","targetVertexId":"n4"},{"id":"e4","name":"e_AddBookToCart","guard":"num_of_books<=3","actions":[" num_of_books++;"],"requirements":[],"properties":{"description":"Click the 'Add to shopping cart' button."},"sourceVertexId":"n4","targetVertexId":"n5"},{"id":"e5","name":"e_ShoppingCart","actions":[],"requirements":[],"properties":{"description":"Click the 'Cart'-button."},"sourceVertexId":"n5","targetVertexId":"n6"},{"id":"e6","name":"e_ShoppingCart","actions":[],"requirements":[],"properties":{"description":"Click the 'Cart'-button."},"sourceVertexId":"n3","targetVertexId":"n6"},{"id":"e7","name":"e_ShoppingCart","actions":[],"requirements":[],"properties":{"description":"Click the 'Cart'-button."},"sourceVertexId":"n4","targetVertexId":"n6"},{"id":"e8","name":"e_SearchBook","actions":[],"requirements":[],"properties":{"description":"In the search field, enter 'Model-based testing', and press enter."},"sourceVertexId":"n6","targetVertexId":"n3"},{"id":"e9","name":"e_SearchBook","actions":[],"requirements":[],"properties":{"description":"In the search field, enter 'Model-based testing', and press enter."},"sourceVertexId":"n5","targetVertexId":"n3"}],"startElementId":"c2a189b6-bd93-4fa8-a32a-c5d0aafe4a0a"}]} -------------------------------------------------------------------------------- /java-annotation/pom.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 4.0.0 6 | 7 | 8 | org.graphwalker.example 9 | graphwalker-example 10 | 4.3.2 11 | 12 | 13 | java-annotation 14 | GraphWalker Annotation Example 15 | 16 | 17 | 18 | org.graphwalker 19 | graphwalker-java 20 | ${project.version} 21 | 22 | 23 | junit 24 | junit 25 | 4.13.2 26 | 27 | 28 | 29 | 30 | 31 | 32 | org.graphwalker 33 | graphwalker-maven-plugin 34 | ${project.version} 35 | 36 | 37 | 38 | generate-test-sources 39 | generate-test-sources 40 | 41 | generate-test-sources 42 | 43 | 44 | 45 | test 46 | test 47 | 48 | test 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /java-annotation/src/test/resources/logback-test.xml: -------------------------------------------------------------------------------- 1 | 26 | 27 | 28 | 29 | %d{HH:mm:ss.SSS} [%thread] [%X{trace}] %-5level %logger{20} - %msg%n 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /java-appium/README.md: -------------------------------------------------------------------------------- 1 | # A simple example using GraphWalker together with an Appium. 2 | 3 | [Appium](http://appium.io/) is a driver to interact with mobile app. 4 | 5 | 6 | ## The test 7 | 8 | Model 9 | 10 | The system under test is a simple android app called Notepad. It's packaged with the test under: 11 | 12 | ``` 13 | src/main/resources/Notepad.apk 14 | ``` 15 | 16 | The test will install the Notepad app to the target device, and start running the test. 17 | The model to the right depicts the design of the test. The code that implements the test is: 18 | 19 | ``` 20 | src/main/java/org/graphwalker/appium/NotesListTest.java 21 | ``` 22 | 23 | The `class NotesListTest` implements the `interface NotesList'. That interface is automatically generated by GraphWalker, 24 | either by running one of the following commands: 25 | 26 | ``` 27 | mvn graphwalker:generate-sources 28 | mvn graphwalker:test 29 | ``` 30 | 31 | Worth noting in the code is the line with GraphWalker annotation: 32 | 33 | ```java 34 | @GraphWalker(value = "random(edge_coverage(100))", start = "v_NotesListView") 35 | ``` 36 | 37 | It does 2 things: 38 | 39 | 1. `value = "random(edge_coverage(100))"`
40 | It sets the generator and the stop condition of the of the path generation of the test. `random(edge_coverage(100))` means 41 | the the path generator is the random path generator, and the stop condition is when all edges of the graph has been visited. 42 | 2. `start = "v_NotesListView"` 43 | Tells GraphWalker where to start the execution. `v_NotesListView` will be the first graph element to be executed. 44 | 45 | The above is the equivalent as running the test offline: 46 | 47 | ``` 48 | java -jar graphwalker-cli-3.4.2.jar offline -m NotesList.graphml "random(edge_coverage(100))" 49 | ``` 50 | 51 | ## Steps to execute the project 52 | 53 | 1. Install appium. On Ubuntu: 54 | 55 | ``` 56 | sudo apt install nodejs-legacy 57 | sudo npm install -g appium 58 | ``` 59 | 60 | 2. Start android emulator.
61 | The test is only verified running the Android emulator using Nexus 7, 2012 with API 19. 62 | 3. Start appium 63 | 4. To run the test: 64 | 65 | ``` 66 | git clone https://github.com/GraphWalker/graphwalker-example.git 67 | cd graphwalker-example/java-appium 68 | mvn graphwalker:test 69 | ``` 70 | 71 | The maven plugin `graphwalker:test` 72 | -------------------------------------------------------------------------------- /java-appium/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 4.0.0 8 | 9 | 10 | org.graphwalker.example 11 | graphwalker-example 12 | 4.3.2 13 | 14 | 15 | java-appium 16 | GraphWalker Example 17 | 18 | 19 | 20 | org.graphwalker 21 | graphwalker-core 22 | ${project.version} 23 | 24 | 25 | org.graphwalker 26 | graphwalker-io 27 | ${project.version} 28 | 29 | 30 | org.graphwalker 31 | graphwalker-java 32 | ${project.version} 33 | 34 | 35 | org.graphwalker 36 | graphwalker-maven-plugin 37 | ${project.version} 38 | 39 | 40 | junit 41 | junit 42 | 4.12 43 | 44 | 45 | io.appium 46 | java-client 47 | 5.0.0-BETA8 48 | 49 | 50 | 51 | 52 | 53 | 54 | org.graphwalker 55 | graphwalker-maven-plugin 56 | ${project.version} 57 | 58 | 59 | 60 | generate-test-sources 61 | generate-test-sources 62 | 63 | generate-test-sources 64 | 65 | 66 | 67 | test 68 | test 69 | 70 | test 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /java-appium/src/main/resources/Notepad.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-appium/src/main/resources/Notepad.apk -------------------------------------------------------------------------------- /java-appium/src/main/resources/org/graphwalker/appium/NotesList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-appium/src/main/resources/org/graphwalker/appium/NotesList.png -------------------------------------------------------------------------------- /java-dataDriven/README.md: -------------------------------------------------------------------------------- 1 | # A simple example using GraphWalker with data from the code 2 | 3 | ## to run the test 4 | 5 | 6 | ``` 7 | mvn graphwalker:test 8 | ``` 9 | 10 | The test will use up all names in `userNames`, and when the list is exhausted, it 11 | will set `isDone`, which is data in the model, to false. 12 | 13 | Since GraphWalker evaluates the conditional expressions, or guards, in the out-edges from `v_B`, 14 | it will force GraphWalker to choose the `e_Done` edge, to the vertex `v_Done`. -------------------------------------------------------------------------------- /java-dataDriven/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 27 | 28 | 30 | 31 | 4.0.0 32 | 33 | 34 | graphwalker-example 35 | org.graphwalker.example 36 | 4.3.2 37 | 38 | 39 | java-dataDriven 40 | GraphWalker Data Driven Model Example 41 | 42 | 43 | 44 | org.graphwalker 45 | graphwalker-core 46 | ${project.version} 47 | 48 | 49 | org.graphwalker 50 | graphwalker-io 51 | ${project.version} 52 | 53 | 54 | org.graphwalker 55 | graphwalker-java 56 | ${project.version} 57 | 58 | 59 | org.graphwalker 60 | graphwalker-maven-plugin 61 | ${project.version} 62 | 63 | 64 | junit 65 | junit 66 | 4.13.2 67 | 68 | 69 | 70 | 71 | 72 | 73 | org.graphwalker 74 | graphwalker-maven-plugin 75 | ${project.version} 76 | 77 | 78 | 79 | generate-sources 80 | generate-sources 81 | 82 | generate-sources 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /java-dataDriven/src/main/java/org/graphwalker/UsingDataFromTestImpl.java: -------------------------------------------------------------------------------- 1 | package org.graphwalker; 2 | 3 | import org.graalvm.polyglot.Value; 4 | import org.graphwalker.core.machine.ExecutionContext; 5 | import org.graphwalker.java.annotation.GraphWalker; 6 | 7 | import java.util.*; 8 | 9 | /** 10 | * See: http://graphwalker.org/docs/maven_archetype for more details 11 | *

12 | * Implements the GraphWalker model: src/main/resources/SmallTest.graphml 13 | * The SmallTest.graphml can be opened and edited using http://www.yworks.com/en/products/yfiles/yed/ 14 | *

15 | * For convienicene, a jpg image exists side-by-side in the same folder. 16 | *

17 | * The @GraphWalker annotation, has the following meaning: 18 | * 1) value defines the generator of this test. Please read more 19 | * on the subject at: http://graphwalker.org/docs/path_generators_and_stop_conditions 20 | * 2) start defines the first element in the model to be executed. (Element is 21 | * either a vertex or an edge) 22 | *

23 | * The interface SmallTest, that SomeSmallTest implements, is generated by 24 | * running: mvn graphwalker:generate-sources 25 | * also: mvn graphwalker:test 26 | */ 27 | @GraphWalker() 28 | public class UsingDataFromTestImpl extends ExecutionContext implements UsingDataFromTest { 29 | 30 | private Deque userNames = new LinkedList(Arrays.asList("Andy", "Trev", "Delight", "Roddy", "Sibyn", "Sydnie")); 31 | 32 | @Override 33 | public void e_A() { 34 | System.out.println("Running: e_A"); 35 | } 36 | 37 | @Override 38 | public void e_B() { 39 | System.out.println("Running: e_B"); 40 | } 41 | 42 | @Override 43 | public void e_Done() { 44 | System.out.println("Running: e_Done"); 45 | } 46 | 47 | @Override 48 | public void v_A() { 49 | System.out.println("Running: v_A"); 50 | } 51 | 52 | @Override 53 | public void v_B() { 54 | System.out.println("Running: v_B"); 55 | if ( userNames.peek() == null ) { 56 | setAttribute("isDone", Value.asValue(true)); 57 | System.out.println(" no more names to test"); 58 | return; 59 | } 60 | System.out.println(" using name: " + userNames.pop()); 61 | } 62 | 63 | @Override 64 | public void v_Done() { 65 | System.out.println("Running: v_Done"); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /java-dataDriven/src/main/resources/org/graphwalker/UsingDataFromTest.json: -------------------------------------------------------------------------------- 1 | { 2 | "models": [ 3 | { 4 | "name": "UsingDataFromTest", 5 | "id": "56b9d0ef-3803-4e82-899f-edfeb4d9fe36", 6 | "actions": [ 7 | "isDone = false" 8 | ], 9 | "vertices": [ 10 | { 11 | "id": "281e06eb-d93b-4d3f-a9ec-978f01004269", 12 | "name": "v_A", 13 | "actions": [], 14 | "requirements": [], 15 | "properties": { 16 | "x": 463.921875, 17 | "y": 264.46875 18 | } 19 | }, 20 | { 21 | "id": "d23ed8aa-14cd-43c1-aa8c-2ded4e862ed4", 22 | "name": "v_B", 23 | "actions": [], 24 | "requirements": [], 25 | "properties": { 26 | "x": 449.921875, 27 | "y": 492.46875 28 | } 29 | }, 30 | { 31 | "id": "9deac665-00f7-4967-a134-5c0a610b76f7", 32 | "name": "v_Done", 33 | "actions": [], 34 | "requirements": [], 35 | "properties": { 36 | "x": 663.921875, 37 | "y": 622.46875 38 | } 39 | } 40 | ], 41 | "edges": [ 42 | { 43 | "id": "429c07be-85ce-451a-88a1-f4b6219a2e39", 44 | "name": "e_B", 45 | "actions": [], 46 | "requirements": [], 47 | "properties": [], 48 | "sourceVertexId": "281e06eb-d93b-4d3f-a9ec-978f01004269", 49 | "targetVertexId": "d23ed8aa-14cd-43c1-aa8c-2ded4e862ed4" 50 | }, 51 | { 52 | "id": "3e3647db-bd37-4ef0-9e3f-9be6fa17e116", 53 | "name": "e_A", 54 | "guard": "isDone == false", 55 | "actions": [], 56 | "requirements": [], 57 | "properties": [], 58 | "sourceVertexId": "d23ed8aa-14cd-43c1-aa8c-2ded4e862ed4", 59 | "targetVertexId": "281e06eb-d93b-4d3f-a9ec-978f01004269" 60 | }, 61 | { 62 | "id": "3e6a3d83-bbb0-4e9a-92c0-1d8a454b5914", 63 | "name": "e_Done", 64 | "guard": "isDone == true", 65 | "actions": [], 66 | "requirements": [], 67 | "properties": [], 68 | "sourceVertexId": "d23ed8aa-14cd-43c1-aa8c-2ded4e862ed4", 69 | "targetVertexId": "9deac665-00f7-4967-a134-5c0a610b76f7" 70 | } 71 | ], 72 | "startElementId": "281e06eb-d93b-4d3f-a9ec-978f01004269" 73 | } 74 | ] 75 | } 76 | -------------------------------------------------------------------------------- /java-integration-test/pom.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 4.0.0 6 | 7 | 8 | org.graphwalker.example 9 | graphwalker-example 10 | 4.3.2 11 | 12 | 13 | java-integration-test 14 | GraphWalker Integration Example 15 | 16 | 17 | false 18 | 19 | 20 | 21 | 22 | org.graphwalker 23 | graphwalker-core 24 | ${project.version} 25 | 26 | 27 | org.graphwalker 28 | graphwalker-java 29 | ${project.version} 30 | 31 | 32 | junit 33 | junit 34 | 4.13.2 35 | 36 | 37 | 38 | 39 | 40 | 41 | org.graphwalker 42 | graphwalker-maven-plugin 43 | ${project.version} 44 | 45 | 46 | 47 | generate-test-sources 48 | generate-test-sources 49 | 50 | generate-test-sources 51 | 52 | 53 | 54 | test 55 | test 56 | 57 | test 58 | 59 | 60 | 61 | 62 | 63 | org.apache.maven.plugins 64 | maven-failsafe-plugin 65 | 2.20 66 | 67 | 68 | 69 | integration-test 70 | verify 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /java-integration-test/src/main/java/org.graphwalker.example/Calculator.java: -------------------------------------------------------------------------------- 1 | package org.graphwalker.example; 2 | 3 | public class Calculator { 4 | 5 | private int result = 0; 6 | 7 | public void add(int x, int y) { 8 | result = x + y; 9 | } 10 | 11 | public int getResult() { 12 | return result; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /java-integration-test/src/test/java/org/graphwalker/example/CalculatorAStarTest.java: -------------------------------------------------------------------------------- 1 | package org.graphwalker.example; 2 | 3 | import org.graphwalker.core.condition.ReachedVertex; 4 | import org.graphwalker.core.generator.AStarPath; 5 | import org.graphwalker.java.annotation.GraphWalker; 6 | 7 | @GraphWalker(pathGenerator = AStarPath.class, stopCondition = ReachedVertex.class, stopConditionValue = "verifyResult") 8 | public class CalculatorAStarTest extends CalculatorTest { 9 | } 10 | -------------------------------------------------------------------------------- /java-integration-test/src/test/java/org/graphwalker/example/CalculatorTest.java: -------------------------------------------------------------------------------- 1 | package org.graphwalker.example; 2 | 3 | import org.graphwalker.core.machine.ExecutionContext; 4 | import org.graphwalker.java.annotation.GraphWalker; 5 | 6 | import static org.hamcrest.CoreMatchers.is; 7 | import static org.junit.Assert.assertThat; 8 | 9 | @GraphWalker 10 | public class CalculatorTest extends ExecutionContext implements CalculatorModel { 11 | 12 | private Calculator calculator = new Calculator(); 13 | 14 | @Override 15 | public void addNumbers() { 16 | // use the calculator and add some numbers 17 | calculator.add(2, 2); 18 | } 19 | 20 | @Override 21 | public void verifyResult() { 22 | // verify that the added numbers is correct 23 | assertThat(calculator.getResult(), is(4)); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /java-integration-test/src/test/java/org/graphwalker/example/CalulatorIT.java: -------------------------------------------------------------------------------- 1 | package org.graphwalker.example; 2 | 3 | import org.graphwalker.core.machine.ExecutionContext; 4 | import org.graphwalker.java.test.Result; 5 | import org.graphwalker.java.test.TestExecutionException; 6 | import org.graphwalker.java.test.TestExecutor; 7 | import org.junit.Test; 8 | 9 | import java.io.File; 10 | import java.io.IOException; 11 | import java.util.Date; 12 | 13 | public class CalulatorIT { 14 | 15 | @Test 16 | public void runCalculatorModel() throws Exception { 17 | execute(CalculatorTest.class); 18 | } 19 | 20 | @Test 21 | public void runOptimizedCalculatorModel() throws Exception { 22 | execute(CalculatorAStarTest.class); 23 | } 24 | 25 | private void execute(Class test) throws IOException { 26 | TestExecutor executor = new TestExecutor(test); 27 | Date startTime = new Date(); 28 | Result result = executor.execute(false); 29 | executor.reportResults(new File("target/reports"), startTime, System.getProperties()); 30 | if (result.hasErrors()) { 31 | throw new TestExecutionException(); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /java-petclinic/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-petclinic/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /java-petclinic/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.3/apache-maven-3.8.3-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /java-petclinic/README.md: -------------------------------------------------------------------------------- 1 | Get and start the PetClinic demo application 2 | ```bash 3 | git clone https://github.com/SpringSource/spring-petclinic.git 4 | cd spring-petclinic 5 | git reset --hard e2fbc561309d03d92a0958f3cf59219b1fc0d985 6 | ./mvnw spring-boot:run 7 | ``` 8 | 9 | To verify that PetClinic is running, open it: http://localhost:8080. It should display this: 10 | 11 | ![alt tag](http://graphwalker.github.io/images/spring-pet-clinic.png) 12 | 13 | Get and run the GraphWalker test example 14 | ```bash 15 | git clone https://github.com/GraphWalker/graphwalker-example.git 16 | cd graphwalker-example/java-petclinic 17 | ./mvnw graphwalker:test 18 | ``` 19 | -------------------------------------------------------------------------------- /java-petclinic/build/reports/tests/1614171832475.0.html: -------------------------------------------------------------------------------- 1 | org.openqa.selenium.NoSuchWindowException: no such window: target window already closed 2 | from unknown error: web view not found 3 | (Session info: chrome=88.0.4324.182) 4 | Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03' 5 | System info: host: 'desktop', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.0-65-generic', java.version: '11.0.10' 6 | Driver info: org.openqa.selenium.chrome.ChromeDriver 7 | Capabilities {acceptInsecureCerts: true, browserName: chrome, browserVersion: 88.0.4324.182, chrome: {chromedriverVersion: 88.0.4324.96 (68dba2d8a0b14..., userDataDir: /tmp/.com.google.Chrome.wwxP6g}, goog:chromeOptions: {debuggerAddress: localhost:34977}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: LINUX, platformName: LINUX, proxy: Proxy(), setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:extension:largeBlob: true, webauthn:virtualAuthenticators: true} 8 | Session ID: b7f19905a63b57ea6a6ba2aad607b3c1 -------------------------------------------------------------------------------- /java-petclinic/pom.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 4.0.0 6 | 7 | 8 | org.graphwalker.example 9 | graphwalker-example 10 | 4.3.2 11 | 12 | 13 | java-petclinic 14 | GraphWalker Pet Clinic Example 15 | 16 | 17 | 18 | 19 | org.graphwalker 20 | graphwalker-maven-plugin 21 | ${project.version} 22 | 23 | 24 | 25 | generate-sources 26 | generate-sources 27 | 28 | generate-sources 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | org.graphwalker 39 | graphwalker-core 40 | ${project.version} 41 | 42 | 43 | org.graphwalker 44 | graphwalker-java 45 | ${project.version} 46 | 47 | 48 | org.graphwalker 49 | graphwalker-websocket 50 | ${project.version} 51 | 52 | 53 | com.codeborne 54 | selenide 55 | 6.8.1 56 | 57 | 58 | com.github.javafaker 59 | javafaker 60 | 1.0.2 61 | 62 | 63 | com.google.guava 64 | guava 65 | 31.1-jre 66 | 67 | 68 | org.apache.commons 69 | commons-lang3 70 | 3.12.0 71 | 72 | 73 | junit 74 | junit 75 | 4.13.2 76 | 77 | 78 | org.graphstream 79 | gs-ui 80 | 1.3 81 | 82 | 83 | xml-apis 84 | xml-apis 85 | 86 | 87 | 88 | 89 | org.graphstream 90 | gs-core 91 | 1.3 92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /java-petclinic/src/main/java/com/company/modelimplementations/FindOwnersTest.java: -------------------------------------------------------------------------------- 1 | package com.company.modelimplementations; 2 | 3 | 4 | import com.company.FindOwners; 5 | import org.graphwalker.core.machine.ExecutionContext; 6 | import org.graphwalker.java.annotation.GraphWalker; 7 | import org.openqa.selenium.By; 8 | 9 | import static com.codeborne.selenide.Condition.text; 10 | import static com.codeborne.selenide.Condition.visible; 11 | import static com.codeborne.selenide.Selenide.*; 12 | 13 | /** 14 | * Implements the model (and interface) FindOwnersSharedState 15 | * The default path generator is Random Path. 16 | * Stop condition is 100% coverage of all edges. 17 | */ 18 | @GraphWalker(value = "random(edge_coverage(100))") 19 | public class FindOwnersTest extends ExecutionContext implements FindOwners { 20 | 21 | @Override 22 | public void v_Owners() { 23 | $(By.tagName("h2")).shouldHave(text("Owners")); 24 | org.junit.Assert.assertTrue($$x("id('owners')/tbody/tr").size() >= 10); 25 | } 26 | 27 | @Override 28 | public void e_AddOwner() { 29 | $("[href='/owners/new']").click(); 30 | } 31 | 32 | @Override 33 | public void v_FindOwners() { 34 | $("h2").shouldHave(text("Find Owners")); 35 | $("h2").shouldBe(visible); 36 | } 37 | 38 | @Override 39 | public void e_Search() { 40 | $("#search-owner-form .btn-default").click(); 41 | } 42 | 43 | @Override 44 | public void e_FindOwners() { 45 | $("[title='find owners']").click(); 46 | } 47 | 48 | @Override 49 | public void v_NewOwner() { 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /java-petclinic/src/main/java/com/company/modelimplementations/NewOwnerTest.java: -------------------------------------------------------------------------------- 1 | package com.company.modelimplementations; 2 | 3 | 4 | import com.company.NewOwner; 5 | import com.github.javafaker.Faker; 6 | import org.graphwalker.core.machine.ExecutionContext; 7 | import org.graphwalker.java.annotation.GraphWalker; 8 | import org.openqa.selenium.By; 9 | 10 | import static com.codeborne.selenide.Condition.text; 11 | import static com.codeborne.selenide.Condition.visible; 12 | import static com.codeborne.selenide.Selenide.$; 13 | 14 | /** 15 | * Implements the model (and interface) NewOwnerSharedState 16 | * The default path generator is Random Path. 17 | * Stop condition is 100% coverage of all edges. 18 | */ 19 | @GraphWalker(value = "random(edge_coverage(100))") 20 | public class NewOwnerTest extends ExecutionContext implements NewOwner { 21 | 22 | @Override 23 | public void v_OwnerInformation() { 24 | } 25 | 26 | @Override 27 | public void e_CorrectData() { 28 | fillOwnerData(); 29 | $(By.id("telephone")).sendKeys(String.valueOf(new Faker().number().digits(10))); 30 | $("button[type=\"submit\"]").click(); 31 | } 32 | 33 | @Override 34 | public void e_IncorrectData() { 35 | fillOwnerData(); 36 | $(By.id("telephone")).sendKeys(String.valueOf(new Faker().number().digits(20))); 37 | $("button[type=\"submit\"]").click(); 38 | } 39 | 40 | @Override 41 | public void v_IncorrectData() { 42 | $(By.cssSelector(".help-inline")) 43 | .shouldHave(text("numeric value out of bounds (<10 digits>.<0 digits> expected)")); 44 | } 45 | 46 | @Override 47 | public void v_NewOwner() { 48 | $(By.tagName("h2")).shouldHave(text("Owner")); 49 | $("button[type=\"submit\"]").shouldBe(visible); 50 | } 51 | 52 | private void fillOwnerData() { 53 | $(By.id("firstName")).clear(); 54 | $(By.id("firstName")).sendKeys(new Faker().name().firstName()); 55 | 56 | $(By.id("lastName")).clear(); 57 | $(By.id("lastName")).sendKeys(new Faker().name().lastName()); 58 | 59 | $(By.id("address")).clear(); 60 | $(By.id("address")).sendKeys(new Faker().address().fullAddress()); 61 | 62 | $(By.id("city")).clear(); 63 | $(By.id("city")).sendKeys(new Faker().address().city()); 64 | 65 | $(By.id("telephone")).clear(); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /java-petclinic/src/main/java/com/company/modelimplementations/PetClinicTest.java: -------------------------------------------------------------------------------- 1 | package com.company.modelimplementations; 2 | 3 | 4 | import com.company.PetClinic; 5 | import org.graphwalker.core.machine.ExecutionContext; 6 | import org.graphwalker.java.annotation.*; 7 | 8 | import static com.codeborne.selenide.Condition.text; 9 | import static com.codeborne.selenide.Condition.visible; 10 | import static com.codeborne.selenide.Configuration.browser; 11 | import static com.codeborne.selenide.Selenide.*; 12 | 13 | /** 14 | * Implements the model (and interface) PetClinicSharedState 15 | * The default path generator is Random Path. 16 | * Stop condition is 100% coverage of all edges. 17 | * The start element in the model is e_StartBrowser. 18 | */ 19 | @GraphWalker(value = "random(edge_coverage(100))", start = "e_StartBrowser") 20 | public class PetClinicTest extends ExecutionContext implements PetClinic { 21 | 22 | @Override 23 | public void v_FindOwners() { 24 | } 25 | 26 | @Override 27 | public void e_HomePage() { 28 | $("[title='home page']").click(); 29 | } 30 | 31 | @Override 32 | public void e_Veterinarians() { 33 | $("[title='veterinarians']").click(); 34 | } 35 | 36 | @Override 37 | public void v_Veterinarians() { 38 | } 39 | 40 | @Override 41 | public void e_FindOwners() { 42 | $("[title='find owners']").click(); 43 | } 44 | 45 | @Override 46 | public void v_HomePage() { 47 | $("h2").shouldHave(text("Welcome")); 48 | $("h2").shouldBe(visible); 49 | $("img.img-responsive").shouldBe(visible); 50 | } 51 | 52 | @Override 53 | public void e_StartBrowser() { 54 | open("http://localhost:8080"); 55 | } 56 | 57 | @BeforeExecution 58 | public void setup() { 59 | System.out.println("PetClinic: Any setup steps happens here. " + 60 | "The annotation @BeforeExecution makes sure that before any elements in the " + 61 | "model is called, this method is called first"); 62 | browser = "chrome"; 63 | } 64 | 65 | @AfterExecution 66 | public void cleanup() { 67 | System.out.println("PetClinic: Any cleanup steps happens here. " + 68 | "The annotation @AfterExecution makes sure that after the test is done, " + 69 | "this method is called last."); 70 | } 71 | 72 | @BeforeElement 73 | public void printBeforeElement() { 74 | System.out.println("Before element " + getCurrentElement().getName()); 75 | } 76 | 77 | @AfterElement 78 | public void printAfterElement() { 79 | System.out.println("After element " + getCurrentElement().getName()); 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /java-petclinic/src/main/java/com/company/modelimplementations/VeterinariansTest.java: -------------------------------------------------------------------------------- 1 | package com.company.modelimplementations; 2 | 3 | 4 | import com.company.Veterinarians; 5 | import org.graphwalker.core.machine.ExecutionContext; 6 | import org.graphwalker.java.annotation.GraphWalker; 7 | import org.junit.Assert; 8 | import org.openqa.selenium.By; 9 | 10 | import static com.codeborne.selenide.Condition.text; 11 | import static com.codeborne.selenide.Selenide.$; 12 | 13 | /** 14 | * Implements the model (and interface) VeterinariensSharedState 15 | * The default path generator is Random Path. 16 | * Stop condition is 100% coverage of all edges. 17 | */ 18 | @GraphWalker(value = "random(vertex_coverage(100))") 19 | public class VeterinariansTest extends ExecutionContext implements Veterinarians { 20 | 21 | @Override 22 | public void v_Veterinarians() { 23 | $(By.tagName("h2")).shouldHave(text("VETERINARIANS")); 24 | Assert.assertTrue($(By.id("vets")).$$x("id('vets')/tbody/tr").size() == 6); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /java-petclinic/src/main/java/com/company/runners/GraphStreamApplication.java: -------------------------------------------------------------------------------- 1 | package com.company.runners; 2 | 3 | import com.company.modelimplementations.*; 4 | import com.company.observers.GraphStreamObserver; 5 | import org.graphstream.graph.Graph; 6 | import org.graphstream.graph.implementations.MultiGraph; 7 | import org.graphwalker.core.event.Observer; 8 | import org.graphwalker.java.test.Executor; 9 | import org.graphwalker.java.test.Result; 10 | import org.graphwalker.java.test.TestExecutor; 11 | 12 | import java.io.IOException; 13 | 14 | /** 15 | * @author Nils Olsson 16 | */ 17 | public class GraphStreamApplication { 18 | 19 | public static void main(String[] args) throws IOException { 20 | System.setProperty("org.graphstream.ui.renderer", 21 | "org.graphstream.ui.j2dviewer.J2DGraphRenderer"); 22 | Graph graph = new MultiGraph("GraphWalker MeetUp"); 23 | graph.display(true); 24 | Executor executor = new TestExecutor(PetClinicTest.class, 25 | FindOwnersTest.class, 26 | NewOwnerTest.class, 27 | OwnerInformationTest.class, 28 | VeterinariansTest.class); 29 | Observer observer = new GraphStreamObserver(graph); 30 | executor.getMachine().addObserver(observer); 31 | 32 | Result result = executor.execute(true); 33 | if (result.hasErrors()) { 34 | for (String error : result.getErrors()) { 35 | System.out.println(error); 36 | } 37 | } 38 | System.out.println("Done: [" + result.getResults().toString(2) + "]"); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /java-petclinic/src/main/java/com/company/runners/WebSocketApplication.java: -------------------------------------------------------------------------------- 1 | package com.company.runners; 2 | 3 | import com.company.modelimplementations.*; 4 | import org.graphwalker.java.test.Executor; 5 | import org.graphwalker.java.test.Result; 6 | import org.graphwalker.java.test.TestExecutor; 7 | import org.graphwalker.websocket.WebSocketServer; 8 | 9 | import java.io.IOException; 10 | 11 | 12 | /** 13 | * @author Nils Olsson 14 | */ 15 | public class WebSocketApplication { 16 | 17 | public static void main(String[] args) throws IOException { 18 | Executor executor = new TestExecutor(PetClinicTest.class, 19 | FindOwnersTest.class, 20 | NewOwnerTest.class, 21 | OwnerInformationTest.class, 22 | VeterinariansTest.class); 23 | 24 | WebSocketServer server = new WebSocketServer(8887, executor.getMachine()); 25 | server.start(); 26 | 27 | Result result = executor.execute(true); 28 | if (result.hasErrors()) { 29 | for (String error : result.getErrors()) { 30 | System.out.println(error); 31 | } 32 | } 33 | System.out.println("Done: [" + result.getResults().toString(2) + "]"); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /java-plugin-generator/README.md: -------------------------------------------------------------------------------- 1 | # Use custom generators 2 | 3 | This example shows code where a custom generator is created. To use the new generator, it has been added to an example model `SimpleModel.json`, where the generator is referenced: 4 | 5 | `"generator": "pluginGenerator(edge_coverage(100))",` 6 | 7 | The custom generator needs to extend the GraphWalker class `PathGeneratorBase` 8 | See [PluginGenerator.java](https://github.com/GraphWalker/graphwalker-example/blob/master/java-plugin-generator/src/main/java/com/mycompany/lib/PluginGenerator.java). 9 | 10 | To use the custom generator with GraphWlalker CLI or Studio, the new class needs to be added to the classpath: 11 | ``` 12 | mvn package 13 | wget https://github.com/GraphWalker/graphwalker-project/releases/download/LATEST-BUILDS/graphwalker-cli-4.2.0.jar 14 | java -cp ./graphwalker-cli-4.2.0.jar:./target/java-plugin-generator-4.2.0.jar org.graphwalker.cli.CLI offline -g src/main/resources/com/company/SimpleModel.json 15 | ``` 16 | -------------------------------------------------------------------------------- /java-plugin-generator/pom.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 4.0.0 6 | 7 | 8 | org.graphwalker.example 9 | graphwalker-example 10 | 4.3.2 11 | 12 | 13 | java-plugin-generator 14 | GraphWalker Generator Plugin Example 15 | 16 | 17 | 18 | org.graphwalker 19 | graphwalker-core 20 | ${project.version} 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /java-plugin-generator/src/main/java/com/mycompany/lib/PluginGenerator.java: -------------------------------------------------------------------------------- 1 | package com.mycompany.lib; 2 | 3 | import org.graphwalker.core.condition.StopCondition; 4 | import org.graphwalker.core.generator.NoPathFoundException; 5 | import org.graphwalker.core.generator.PathGeneratorBase; 6 | import org.graphwalker.core.generator.SingletonRandomGenerator; 7 | import org.graphwalker.core.machine.Context; 8 | import org.graphwalker.core.model.Element; 9 | import org.slf4j.Logger; 10 | import org.slf4j.LoggerFactory; 11 | 12 | import java.util.List; 13 | 14 | /** 15 | * A generator that is a code copy of the RandomPathGenerator. 16 | * It serves the purpose of verifying the runtime loading of an plugin generator 17 | */ 18 | public class PluginGenerator extends PathGeneratorBase { 19 | 20 | private static final Logger LOG = LoggerFactory.getLogger(PluginGenerator.class); 21 | 22 | public PluginGenerator(StopCondition stopCondition) { 23 | setStopCondition(stopCondition); 24 | } 25 | 26 | @Override 27 | public Context getNextStep() { 28 | Context context = super.getNextStep(); 29 | Element currentElement = context.getCurrentElement(); 30 | List elements = context.filter(context.getModel().getElements(currentElement)); 31 | if (elements.isEmpty()) { 32 | LOG.error("currentElement: " + currentElement); 33 | LOG.error("context.getModel().getElements(): " + context.getModel().getElements()); 34 | throw new NoPathFoundException(context.getCurrentElement()); 35 | } 36 | context.setCurrentElement(elements.get(SingletonRandomGenerator.nextInt(elements.size()))); 37 | return context; 38 | } 39 | 40 | @Override 41 | public boolean hasNextStep() { 42 | return !getStopCondition().isFulfilled(); 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /java-plugin-generator/src/main/resources/com/company/SimpleModel.json: -------------------------------------------------------------------------------- 1 | { 2 | "models": [ 3 | { 4 | "name": "SimpleModel", 5 | "id": "1b69c3f3-727b-48b4-bb6c-cf90e45f7be1", 6 | "startElementId": "v1", 7 | "generator": "pluginGenerator(edge_coverage(100))", 8 | "vertices": [ 9 | { 10 | "id": "v1", 11 | "name": "v_Vertex_1" 12 | }, 13 | { 14 | "id": "v2", 15 | "name": "v_Vertex_2" 16 | } 17 | ], 18 | "edges": [ 19 | { 20 | "id": "e1", 21 | "name": "e_Edge_1", 22 | "sourceVertexId": "v1", 23 | "targetVertexId": "v2" 24 | } 25 | ] 26 | } 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /java-prestashop/README.md: -------------------------------------------------------------------------------- 1 | # This project was made for a presentation at [SAST](http://sast.se/meeting.jsp?id=381) 2 | 3 | The example uses [PrestaSop](https://www.prestashop.com/en) as the System Under Test [SUT]. 4 | To get the the SUT installed locally the presentation uses the docker version of PrestaShop. Go to [PrestaShops GitHub 5 | page](https://github.com/PrestaShop/PrestaShop) and follow the instructions there. 6 | 7 | Before running the example, make sure following requirements are met/installed on your machine: 8 | * Java JDK 8 9 | * Maven >= 3.5 10 | * Docker >= 18 11 | * Firefox latest version 12 | 13 | ## Get the PrestaShop demo running 14 | 15 | The instructions are from: https://hub.docker.com/r/bitnami/prestashop/ 16 | 17 | ```shell script 18 | mkdir PrestaShop && cd PrestaShop 19 | curl -sSL https://raw.githubusercontent.com/bitnami/bitnami-docker-prestashop/master/docker-compose.yml > docker-compose.yml 20 | docker-compose up -d 21 | ``` 22 | 23 | To shut it down: 24 | 25 | ```shell script 26 | docker-compose down 27 | ``` 28 | 29 | The `docker-compose up` command will launch 2 services, one database and the PrestaShop web app. It will take a while until all is up running. 30 | 31 | Goto http://localhost, and the last install phase of Prestashop will start. 32 | 33 | ![alt tag](images/prestashop/bitnami_installing.png) 34 | 35 | When done, you will be forwarded to: 36 | 37 | ![alt tag](images/prestashop/After_installation.png) 38 | 39 | 40 | ## GraphWalker running tests using different test tools 41 | 42 | Extending the same interface `PrestaShop`, different implementations can be used to run th same tests. The interface is created from models in the folder
43 | `src/main/resources/com/prestashop`
44 | and will end up in this folder
45 | `target/generated-sources/graphwalker/com/prestashop`. 46 | 47 | Interfaces are created by graphwalker by running:
48 | ```shell script 49 | mvn graphwalker:generate-sources 50 | ``` 51 | They are also created during the `compile` lifecycle of maven. 52 | 53 | 54 | ### Run the GraphWalker test with [Selenide](https://selenide.org/) 55 | 56 | The model implementation using [selenide](https://github.com/GraphWalker/graphwalker-example/blob/master/java-prestashop/src/main/java/com/prestashop/modelimplementation/SelenideImpl.java). 57 | 58 | ```shell script 59 | git clone https://github.com/GraphWalker/graphwalker-example.git 60 | cd graphwalker-example/java-prestashop 61 | mvn -Pselenide compile exec:java -Dexec.cleanupDaemonThreads=false -Dexec.mainClass="com.prestashop.runners.SelenideRunner" 62 | ``` 63 | 64 | ### Run the GraphWalker test with [Eye](https://eyeautomate.com/eye/) 65 | 66 | The model implementation using [eye](https://github.com/GraphWalker/graphwalker-example/blob/master/java-prestashop/src/main/java/com/prestashop/modelimplementation/EyeImpl.java). 67 | 68 | You need to install eye2.jar in order for the below to work 69 | 70 | ```shell script 71 | mvn install:install-file -Dfile=/eye2.jar -DgroupId=eye -DartifactId=Eye -Dversion=2 -Dpackaging=jar 72 | 73 | mvn -Peye compile exec:java -Dexec.cleanupDaemonThreads=false -Dexec.mainClass="com.prestashop.runners.EyeRunner" 74 | ``` 75 | 76 | ### Run the GraphWalker test with [SikuliX](http://sikulix.com/) 77 | 78 | The model implementation using [sikuli](https://github.com/GraphWalker/graphwalker-example/blob/master/java-prestashop/src/main/java/com/prestashop/modelimplementation/SikuliImpl.java). 79 | 80 | ```shell script 81 | mvn -Psikuli compile exec:java -Dexec.cleanupDaemonThreads=false -Dexec.mainClass="com.prestashop.runners.SikuliRunner" 82 | ``` 83 | -------------------------------------------------------------------------------- /java-prestashop/images/prestashop/After_installation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-prestashop/images/prestashop/After_installation.png -------------------------------------------------------------------------------- /java-prestashop/images/prestashop/Database_configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-prestashop/images/prestashop/Database_configuration.png -------------------------------------------------------------------------------- /java-prestashop/images/prestashop/File_and_folders_permissions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-prestashop/images/prestashop/File_and_folders_permissions.png -------------------------------------------------------------------------------- /java-prestashop/images/prestashop/InstallationAssistant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-prestashop/images/prestashop/InstallationAssistant.png -------------------------------------------------------------------------------- /java-prestashop/images/prestashop/Store_information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-prestashop/images/prestashop/Store_information.png -------------------------------------------------------------------------------- /java-prestashop/images/prestashop/bitnami_installing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-prestashop/images/prestashop/bitnami_installing.png -------------------------------------------------------------------------------- /java-prestashop/requirement/UC01.md: -------------------------------------------------------------------------------- 1 | # Order flow for customer 2 | 3 | ## 1 Browse for product 4 | As a buyer I want to be able to browse to a product that interests me 5 | 6 | ## 2 Adding to shopping cart 7 | As a buyer when I find the product I want to add it to the shopping cart 8 | 9 | ## 3 Verify the order 10 | As a buyer I want to be able to verify my shopping cart before checking out 11 | 12 | ## 4 Checkout 13 | As a buyer I want to do a checkout of my shopping cart 14 | 15 | ## 5 Non-signed in 16 | As a buyer I want to buy the product without adding an account 17 | 18 | ## 6 Personal information 19 | As a Store owner I need the buyer's 20 | * 6.1 personal information 21 | * 6.2 agreement to the terms and conditions 22 | * 6.3 delivery address 23 | * 6.4 selected shipping method 24 | * 6.5 payment method 25 | * 6.6 agreement to the terms of service 26 | 27 | so the order can be processed 28 | 29 | ## 7 Confirmation of order 30 | As a Buyer I want to see a confirmation of the order when the payment is completed 31 | -------------------------------------------------------------------------------- /java-prestashop/src/main/java/com/prestashop/modelimplementation/EyeImpl.java: -------------------------------------------------------------------------------- 1 | package com.prestashop.modelimplementation; 2 | 3 | import com.prestashop.PrestaShop; 4 | import org.graphwalker.core.machine.ExecutionContext; 5 | 6 | import eye.Eye; 7 | import eye.Match; 8 | import org.graphwalker.java.annotation.AfterExecution; 9 | import org.graphwalker.java.annotation.BeforeExecution; 10 | import org.junit.Assert; 11 | 12 | import javax.imageio.ImageIO; 13 | import java.awt.image.BufferedImage; 14 | import java.io.IOException; 15 | 16 | import static com.codeborne.selenide.Configuration.browser; 17 | import static com.codeborne.selenide.Selenide.open; 18 | 19 | public class EyeImpl extends ExecutionContext implements PrestaShop { 20 | 21 | private Eye eye; 22 | 23 | @BeforeExecution 24 | public void setup() { 25 | eye = new Eye(); 26 | } 27 | @Override 28 | public void e_Start() { 29 | browser = "firefox"; 30 | open("http://localhost"); 31 | } 32 | 33 | @Override 34 | public void v_ConfirmOrder() { 35 | BufferedImage image = getBufferedImage("/images/personalInformation.png"); 36 | Assert.assertNotNull("Could not find the personal information page", eye.findImage(image)); 37 | } 38 | 39 | @Override 40 | public void e_Checkout() { 41 | BufferedImage image = getBufferedImage("/images/proceedToCheckout.png"); 42 | Match match = eye.findImage(image); 43 | Assert.assertTrue("Could not click on the proceed to checkout button", eye.click(match.getCenterLocation())); 44 | } 45 | 46 | @Override 47 | public void v_Product() { 48 | BufferedImage image = getBufferedImage("/images/productPage.png"); 49 | Assert.assertNotNull("Could not find the product page", eye.findImage(image)); 50 | } 51 | 52 | @Override 53 | public void e_Select_Product() { 54 | BufferedImage image = getBufferedImage("/images/product.png"); 55 | Match match = eye.findImage(image); 56 | Assert.assertTrue("Could not click on the product", eye.click(match.getCenterLocation())); 57 | } 58 | 59 | @Override 60 | public void v_HomePage() { 61 | BufferedImage image = getBufferedImage("/images/homePage.png"); 62 | Assert.assertNotNull("Could not find the Home Page", eye.findImage(image)); 63 | } 64 | 65 | @Override 66 | public void e_Cart() { 67 | BufferedImage image = getBufferedImage("/images/cartButton.png"); 68 | Match match = eye.findImage(image); 69 | Assert.assertTrue("Could not click on the cart button", eye.click(match.getCenterLocation())); 70 | } 71 | 72 | @Override 73 | public void v_Cart() { 74 | BufferedImage image = getBufferedImage("/images/shoppingCart.png"); 75 | Assert.assertNotNull("Could not find the Home Page", eye.findImage(image)); 76 | } 77 | 78 | @Override 79 | public void e_AddProductToCart() { 80 | BufferedImage image = getBufferedImage("/images/addToCart.png"); 81 | Match match = eye.findImage(image); 82 | Assert.assertTrue("Could not click on the add to cart button", eye.click(match.getCenterLocation())); 83 | 84 | image = getBufferedImage("/images/continueShopping.png"); 85 | match = eye.findImage(image); 86 | Assert.assertTrue("Could not click on the continue shopping button", eye.click(match.getCenterLocation())); 87 | } 88 | 89 | private BufferedImage getBufferedImage(String fileName) { 90 | BufferedImage image = null; 91 | try { 92 | image = ImageIO.read(this.getClass().getResourceAsStream(fileName)); 93 | } catch (IOException e) { 94 | Assert.fail("Could not load image: " + fileName + " Caused by: " + e.getMessage()); 95 | } 96 | return image; 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /java-prestashop/src/main/java/com/prestashop/modelimplementation/SelenideImpl.java: -------------------------------------------------------------------------------- 1 | package com.prestashop.modelimplementation; 2 | 3 | 4 | import com.prestashop.PrestaShop; 5 | import org.graphwalker.core.machine.ExecutionContext; 6 | 7 | import static com.codeborne.selenide.CollectionCondition.size; 8 | import static com.codeborne.selenide.Condition.*; 9 | import static com.codeborne.selenide.Configuration.browser; 10 | import static com.codeborne.selenide.Selenide.*; 11 | 12 | 13 | public class SelenideImpl extends ExecutionContext implements PrestaShop { 14 | 15 | @Override 16 | public void v_ConfirmOrder() { 17 | $$(".step-title").shouldHave(size(4)); 18 | $(".step-title").shouldHave(text("1 PERSONAL INFORMATION")); 19 | 20 | Integer itemsInCart = getAttribute("itemsInCart").asInt(); 21 | String str = itemsInCart.toString() + " item"; 22 | if (itemsInCart > 1) { 23 | str += "s"; 24 | } 25 | $(".cart-summary-products p").shouldHave(matchText(str)); 26 | } 27 | 28 | @Override 29 | public void e_Checkout() { 30 | $(".checkout .btn-primary").click(); 31 | } 32 | 33 | @Override 34 | public void v_Product() { 35 | $(".breadcrumb").shouldHave(text("Home Clothes Men Hummingbird printed t-shirt")); 36 | $("#product-description-short-1").shouldHave(text("Regular fit, round neckline, short sleeves. Made of extra long staple pima cotton.")); 37 | } 38 | 39 | @Override 40 | public void e_Select_Product() { 41 | $("[data-id-product='1']").scrollTo().click(); 42 | } 43 | 44 | @Override 45 | public void v_HomePage() { 46 | $(".products-section-title").shouldHave(text("POPULAR PRODUCTS")); 47 | } 48 | 49 | @Override 50 | public void e_Cart() { 51 | $("#_desktop_cart").click(); 52 | } 53 | 54 | @Override 55 | public void v_Cart() { 56 | $(".card.cart-container .h1").shouldHave(text("SHOPPING CART")); 57 | $("[data-id_customization='0']").shouldHave(text("Hummingbird printed t-shirt")); 58 | } 59 | 60 | @Override 61 | public void e_AddProductToCart() { 62 | $("[data-button-action='add-to-cart']").click(); 63 | $(".modal-header").shouldHave(text("Product successfully added to your shopping cart")); 64 | $(".btn[data-dismiss='modal']").click(); 65 | } 66 | 67 | @Override 68 | public void e_Start() { 69 | browser = "firefox"; 70 | open("http://localhost"); 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /java-prestashop/src/main/java/com/prestashop/modelimplementation/SikuliImpl.java: -------------------------------------------------------------------------------- 1 | package com.prestashop.modelimplementation; 2 | 3 | import com.prestashop.PrestaShop; 4 | import org.graphwalker.core.machine.ExecutionContext; 5 | import org.graphwalker.java.annotation.AfterExecution; 6 | import org.graphwalker.java.annotation.BeforeExecution; 7 | import org.junit.Assert; 8 | import org.sikuli.script.*; 9 | 10 | import static com.codeborne.selenide.Configuration.browser; 11 | import static com.codeborne.selenide.Selenide.open; 12 | 13 | public class SikuliImpl extends ExecutionContext implements PrestaShop { 14 | 15 | Screen screen; 16 | Region region; 17 | 18 | @BeforeExecution 19 | public void setup() { 20 | screen = new Screen(); 21 | ImagePath.add("src/main/resources/images"); 22 | } 23 | 24 | 25 | @Override 26 | public void e_Start() { 27 | browser = "firefox"; 28 | open("http://localhost"); 29 | } 30 | 31 | @Override 32 | public void v_ConfirmOrder() { 33 | try { 34 | region.wait("personalInformation.png"); 35 | } catch (FindFailed findFailed) { 36 | findFailed.printStackTrace(); 37 | Assert.fail(); 38 | } 39 | } 40 | 41 | @Override 42 | public void e_Checkout() { 43 | try { 44 | region.click("proceedToCheckout.png"); 45 | } catch (FindFailed findFailed) { 46 | findFailed.printStackTrace(); 47 | Assert.fail(); 48 | } 49 | } 50 | 51 | @Override 52 | public void v_Product() { 53 | try { 54 | region.wait("productPage.png"); 55 | } catch (FindFailed findFailed) { 56 | findFailed.printStackTrace(); 57 | Assert.fail(); 58 | } 59 | } 60 | 61 | @Override 62 | public void e_Select_Product() { 63 | try { 64 | region.click("product.png"); 65 | } catch (FindFailed findFailed) { 66 | findFailed.printStackTrace(); 67 | Assert.fail(); 68 | } 69 | } 70 | 71 | @Override 72 | public void v_HomePage() { 73 | try { 74 | region = App.focusedWindow(); 75 | region.wait("homePage.png"); 76 | } catch (FindFailed findFailed) { 77 | findFailed.printStackTrace(); 78 | Assert.fail(); 79 | } 80 | } 81 | 82 | @Override 83 | public void e_Cart() { 84 | try { 85 | region.click("cartButton.png"); 86 | } catch (FindFailed findFailed) { 87 | findFailed.printStackTrace(); 88 | Assert.fail(); 89 | } 90 | } 91 | 92 | @Override 93 | public void v_Cart() { 94 | try { 95 | region.wait("shoppingCart.png"); 96 | } catch (FindFailed findFailed) { 97 | findFailed.printStackTrace(); 98 | Assert.fail(); 99 | } 100 | } 101 | 102 | @Override 103 | public void e_AddProductToCart() { 104 | try { 105 | region.click("addToCart.png"); 106 | region.wait("continueShopping.png"); 107 | region.click("continueShopping.png"); 108 | } catch (FindFailed findFailed) { 109 | findFailed.printStackTrace(); 110 | Assert.fail(); 111 | } 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /java-prestashop/src/main/java/com/prestashop/runners/EyeRunner.java: -------------------------------------------------------------------------------- 1 | package com.prestashop.runners; 2 | 3 | import com.prestashop.modelimplementation.EyeImpl; 4 | import org.graphwalker.core.statistics.Execution; 5 | import org.graphwalker.java.test.Result; 6 | import org.graphwalker.java.test.TestExecutor; 7 | import org.slf4j.Logger; 8 | import org.slf4j.LoggerFactory; 9 | 10 | import java.io.IOException; 11 | 12 | public class EyeRunner { 13 | private static Logger logger = LoggerFactory.getLogger(EyeRunner.class); 14 | 15 | public static void main(String[] args) throws IOException { 16 | TestExecutor executor = new TestExecutor( 17 | EyeImpl.class 18 | ); 19 | 20 | Result result = executor.execute(true); 21 | if (result.hasErrors()) { 22 | for (String error : result.getErrors()) { 23 | logger.error(error); 24 | } 25 | } 26 | logger.info("Done: [" + result.getResults().toString(2) + "]"); 27 | int step = 1; 28 | for (Execution execution : executor.getMachine().getProfiler().getExecutionPath()) { 29 | logger.info("Step {}: {}", step++, execution.getElement().getName()); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /java-prestashop/src/main/java/com/prestashop/runners/SelenideRunner.java: -------------------------------------------------------------------------------- 1 | package com.prestashop.runners; 2 | 3 | import com.prestashop.modelimplementation.SelenideImpl; 4 | import org.graphwalker.core.statistics.Execution; 5 | import org.graphwalker.java.test.Result; 6 | import org.graphwalker.java.test.TestExecutor; 7 | import org.slf4j.Logger; 8 | import org.slf4j.LoggerFactory; 9 | 10 | import java.io.IOException; 11 | 12 | public class SelenideRunner { 13 | private static Logger logger = LoggerFactory.getLogger(SelenideRunner.class); 14 | 15 | public static void main(String[] args) throws IOException { 16 | TestExecutor executor = new TestExecutor( 17 | SelenideImpl.class 18 | ); 19 | 20 | Result result = executor.execute(true); 21 | if (result.hasErrors()) { 22 | for (String error : result.getErrors()) { 23 | logger.error(error); 24 | } 25 | } 26 | logger.info("Done: [" + result.getResults().toString(2) + "]"); 27 | int step = 1; 28 | for (Execution execution : executor.getMachine().getProfiler().getExecutionPath()) { 29 | logger.info( 30 | "Step {}: Visited count {}: {}", 31 | step++, 32 | executor.getMachine().getProfiler().getVisitCount(execution.getContext(),execution.getElement()), 33 | execution.getElement().getName()); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /java-prestashop/src/main/java/com/prestashop/runners/SikuliRunner.java: -------------------------------------------------------------------------------- 1 | package com.prestashop.runners; 2 | 3 | import com.prestashop.modelimplementation.SikuliImpl; 4 | import org.graphwalker.core.statistics.Execution; 5 | import org.graphwalker.java.test.Result; 6 | import org.graphwalker.java.test.TestExecutor; 7 | import org.slf4j.Logger; 8 | import org.slf4j.LoggerFactory; 9 | 10 | import java.io.IOException; 11 | 12 | public class SikuliRunner { 13 | private static Logger logger = LoggerFactory.getLogger(SikuliRunner.class); 14 | 15 | public static void main(String[] args) throws IOException { 16 | TestExecutor executor = new TestExecutor( 17 | SikuliImpl.class 18 | ); 19 | 20 | Result result = executor.execute(true); 21 | if (result.hasErrors()) { 22 | for (String error : result.getErrors()) { 23 | logger.error(error); 24 | } 25 | } 26 | logger.info("Done: [" + result.getResults().toString(2) + "]"); 27 | int step = 1; 28 | for (Execution execution : executor.getMachine().getProfiler().getExecutionPath()) { 29 | logger.info("Step {}: {}", step++, execution.getElement().getName()); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /java-prestashop/src/main/resources/com/prestashop/UC01 - Naive version.json: -------------------------------------------------------------------------------- 1 | {"models":[{"edges":[{"id":"007e3e80-da16-11e9-9ab2-0ff5ddfe2c2c","name":"välj produkt","sourceVertexId":"0f932260-da15-11e9-9ab2-0ff5ddfe2c2c","targetVertexId":"f4724a50-da15-11e9-9ab2-0ff5ddfe2c2c"},{"id":"66840010-da26-11e9-b24d-95bd34e7b928","name":"gå till kundvagn","sourceVertexId":"f4724a50-da15-11e9-9ab2-0ff5ddfe2c2c","targetVertexId":"5ecfcd40-da26-11e9-b24d-95bd34e7b928"},{"id":"ab2c9970-da26-11e9-b24d-95bd34e7b928","name":"checkout","sourceVertexId":"5ecfcd40-da26-11e9-b24d-95bd34e7b928","targetVertexId":"8b0da350-da26-11e9-b24d-95bd34e7b928"}],"generator":"random(edge_coverage(100))","id":"e918f0f7-dc56-4aa3-97fb-3660654309f6","name":"Untitled","startElementId":"","vertices":[{"id":"0f932260-da15-11e9-9ab2-0ff5ddfe2c2c","name":"home","properties":{"x":347.9030890845374,"y":521.0366606376624}},{"id":"f4724a50-da15-11e9-9ab2-0ff5ddfe2c2c","name":"vald produkt","properties":{"x":592,"y":525}},{"id":"5ecfcd40-da26-11e9-b24d-95bd34e7b928","name":"kundvagn","properties":{"x":331,"y":644}},{"id":"8b0da350-da26-11e9-b24d-95bd34e7b928","name":"verifiera order","properties":{"x":560,"y":672}}]}],"selectedModelIndex":0,"selectedElementId":null,"name":"VISMODEL"} -------------------------------------------------------------------------------- /java-prestashop/src/main/resources/com/prestashop/UC01 - Normalized version.json: -------------------------------------------------------------------------------- 1 | { 2 | "models": [ 3 | { 4 | "edges": [ 5 | { 6 | "id": "007e3e80-da16-11e9-9ab2-0ff5ddfe2c2c", 7 | "name": "e_Select_Product", 8 | "sourceVertexId": "0f932260-da15-11e9-9ab2-0ff5ddfe2c2c", 9 | "targetVertexId": "f4724a50-da15-11e9-9ab2-0ff5ddfe2c2c" 10 | }, 11 | { 12 | "id": "66840010-da26-11e9-b24d-95bd34e7b928", 13 | "name": "e_Cart", 14 | "sourceVertexId": "f4724a50-da15-11e9-9ab2-0ff5ddfe2c2c", 15 | "targetVertexId": "5ecfcd40-da26-11e9-b24d-95bd34e7b928", 16 | "guard": "itemsInCart > 0" 17 | }, 18 | { 19 | "id": "ab2c9970-da26-11e9-b24d-95bd34e7b928", 20 | "name": "e_Checkout", 21 | "sourceVertexId": "5ecfcd40-da26-11e9-b24d-95bd34e7b928", 22 | "targetVertexId": "8b0da350-da26-11e9-b24d-95bd34e7b928" 23 | }, 24 | { 25 | "id": "6619617b-4a06-45dd-9363-722324a3d373", 26 | "name": "e_Start", 27 | "sourceVertexId": "0f932260-da15-11e9-9ab2-0ff5ddfe2c2c", 28 | "targetVertexId": "0f932260-da15-11e9-9ab2-0ff5ddfe2c2c", 29 | "guard": "isStarted == false", 30 | "actions": [ 31 | "isStarted = true;" 32 | ] 33 | }, 34 | { 35 | "id": "a5880940-ddf6-11e9-8a12-a30a7bdda215", 36 | "name": "e_AddProductToCart", 37 | "sourceVertexId": "f4724a50-da15-11e9-9ab2-0ff5ddfe2c2c", 38 | "targetVertexId": "f4724a50-da15-11e9-9ab2-0ff5ddfe2c2c", 39 | "actions": [ 40 | "itemsInCart++;" 41 | ] 42 | } 43 | ], 44 | "generator": "random(edge_coverage(100))", 45 | "id": "e918f0f7-dc56-4aa3-97fb-3660654309f6", 46 | "name": "PrestaShop", 47 | "actions": [ 48 | "isStarted = false;", 49 | "itemsInCart = 0;" 50 | ], 51 | "startElementId": "6619617b-4a06-45dd-9363-722324a3d373", 52 | "vertices": [ 53 | { 54 | "id": "0f932260-da15-11e9-9ab2-0ff5ddfe2c2c", 55 | "name": "v_HomePage", 56 | "properties": { 57 | "x": 299.9030890845374, 58 | "y": 426.0366606376624 59 | } 60 | }, 61 | { 62 | "id": "f4724a50-da15-11e9-9ab2-0ff5ddfe2c2c", 63 | "name": "v_Product", 64 | "properties": { 65 | "x": 658, 66 | "y": 523 67 | } 68 | }, 69 | { 70 | "id": "5ecfcd40-da26-11e9-b24d-95bd34e7b928", 71 | "name": "v_Cart", 72 | "properties": { 73 | "x": 331, 74 | "y": 644 75 | } 76 | }, 77 | { 78 | "id": "8b0da350-da26-11e9-b24d-95bd34e7b928", 79 | "name": "v_ConfirmOrder", 80 | "properties": { 81 | "x": 560, 82 | "y": 672 83 | } 84 | } 85 | ] 86 | } 87 | ], 88 | "selectedModelIndex": 0, 89 | "selectedElementId": null, 90 | "name": "VISMODEL" 91 | } -------------------------------------------------------------------------------- /java-prestashop/src/main/resources/images/addToCart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-prestashop/src/main/resources/images/addToCart.png -------------------------------------------------------------------------------- /java-prestashop/src/main/resources/images/cartButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-prestashop/src/main/resources/images/cartButton.png -------------------------------------------------------------------------------- /java-prestashop/src/main/resources/images/continueShopping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-prestashop/src/main/resources/images/continueShopping.png -------------------------------------------------------------------------------- /java-prestashop/src/main/resources/images/homePage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-prestashop/src/main/resources/images/homePage.png -------------------------------------------------------------------------------- /java-prestashop/src/main/resources/images/localhost_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-prestashop/src/main/resources/images/localhost_icon.png -------------------------------------------------------------------------------- /java-prestashop/src/main/resources/images/personalInformation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-prestashop/src/main/resources/images/personalInformation.png -------------------------------------------------------------------------------- /java-prestashop/src/main/resources/images/proceedToCheckout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-prestashop/src/main/resources/images/proceedToCheckout.png -------------------------------------------------------------------------------- /java-prestashop/src/main/resources/images/product.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-prestashop/src/main/resources/images/product.png -------------------------------------------------------------------------------- /java-prestashop/src/main/resources/images/productPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-prestashop/src/main/resources/images/productPage.png -------------------------------------------------------------------------------- /java-prestashop/src/main/resources/images/shoppingCart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GraphWalker/graphwalker-example/b9d214349d49a0f0e31309da7f5437ee2af9bbfa/java-prestashop/src/main/resources/images/shoppingCart.png -------------------------------------------------------------------------------- /java-prestashop/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d{HH:mm:ss.SSS} [%thread] [%X{trace}] %-5level %logger{20} - %msg%n 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /java-websocket/pom.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 4.0.0 6 | 7 | 8 | org.graphwalker.example 9 | graphwalker-example 10 | 4.3.2 11 | 12 | 13 | java-websocket 14 | GraphWalker Websocket Example 15 | 16 | 17 | 18 | org.graphwalker 19 | graphwalker-cli 20 | ${project.version} 21 | 22 | 23 | org.java-websocket 24 | Java-WebSocket 25 | 1.5.3 26 | 27 | 28 | org.json 29 | json 30 | 20220924 31 | 32 | 33 | junit 34 | junit 35 | 4.13.2 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /java-websocket/src/test/java/org/graphwalker/example/GraphWalkerClientTest.java: -------------------------------------------------------------------------------- 1 | package org.graphwalker.example; 2 | 3 | import java.nio.file.Paths; 4 | 5 | public class GraphWalkerClientTest { 6 | 7 | public void smallModel() { 8 | 9 | GraphWalkerWebSocketClient c = new GraphWalkerWebSocketClient(); 10 | c.run(); 11 | c.loadModel(Paths.get("json/SmallModel.json")); 12 | c.startMachine(); 13 | while (c.hasNext()) { 14 | c.getNext(); 15 | c.getData(); 16 | } 17 | c.close(); 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /java-websocket/src/test/resources/json/SmallModel.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "loadModel", 3 | "model": { 4 | "name": "Small model", 5 | "generator": "random(edge_coverage(100))", 6 | "vertices": [ 7 | { 8 | "name": "v_VerifySomeAction", 9 | "id": "n0" 10 | }, 11 | { 12 | "name": "v_VerifySomeOtherAction", 13 | "id": "n1" 14 | } 15 | ], 16 | "edges": [ 17 | { 18 | "name": "e_FirstAction", 19 | "id": "e0", 20 | "dstVertexId": "n0", 21 | "startElement": "true", 22 | "actions": [ 23 | { 24 | "action": "x=0;" 25 | }, 26 | { 27 | "action": "y=0;" 28 | } 29 | ] 30 | }, 31 | { 32 | "name": "e_AnotherAction", 33 | "id": "e1", 34 | "srcVertexId": "n0", 35 | "dstVertexId": "n1", 36 | "actions": [ 37 | { 38 | "action": "y+=1;" 39 | } 40 | ] 41 | }, 42 | { 43 | "name": "e_SomeOtherAction", 44 | "id": "e2", 45 | "srcVertexId": "n1", 46 | "dstVertexId": "n1", 47 | "actions": [ 48 | { 49 | "action": "x+=1;" 50 | } 51 | ] 52 | }, 53 | { 54 | "name": "e_SomeOtherAction", 55 | "id": "e3", 56 | "srcVertexId": "n1", 57 | "dstVertexId": "n0", 58 | "actions": [ 59 | { 60 | "action": "y+=1;" 61 | } 62 | ] 63 | } 64 | ] 65 | } 66 | } -------------------------------------------------------------------------------- /java-websocket/src/test/resources/logback-test.xml: -------------------------------------------------------------------------------- 1 | 26 | 27 | 28 | 29 | 31 | 32 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 4.0.0 6 | org.graphwalker.example 7 | graphwalker-example 8 | 4.3.2 9 | pom 10 | 11 | 12 | java-algorithm 13 | java-annotation 14 | java-websocket 15 | java-petclinic 16 | java-amazon 17 | java-integration-test 18 | java-dataDriven 19 | java-prestashop 20 | java-plugin-generator 21 | 22 | 23 | 24 | UTF-8 25 | UTF-8 26 | 1.8 27 | 1.8 28 | 29 | 30 | 31 | 32 | 33 | false 34 | always 35 | warn 36 | 37 | 38 | true 39 | never 40 | fail 41 | 42 | sonatype-nexus-snapshots 43 | Sonatype Nexus Snapshots 44 | https://oss.sonatype.org/content/repositories/snapshots 45 | default 46 | 47 | 48 | 49 | 50 | sonatype-nexus-snapshots 51 | Sonatype Nexus Snapshots 52 | https://oss.sonatype.org/content/repositories/snapshots 53 | 54 | false 55 | 56 | 57 | true 58 | 59 | 60 | 61 | 62 | --------------------------------------------------------------------------------