From efc306b2afc3b7746be3cb5dca31b937bed0b8a9 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sun, 4 Sep 2016 08:12:48 +0200 Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20use=20google-test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 44 --- PaintTest/data.c | 680 ++++++++++++++++++++++---------------------- PaintTest/gtest.cpp | 151 +++++++--- PaintTest/main.c | 32 +++ PaintTest/main.h | 2 + 5 files changed, 487 insertions(+), 422 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 18cbaebcb5..8fd50a45be 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -365,56 +365,12 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/g2.dat" DESTINATION share/${PROJECT}) install(DIRECTORY data/ DESTINATION share/${PROJECT}) install(FILES ${DOC_FILES} DESTINATION share/doc/${PROJECT}) -INCLUDE(ExternalProject) - -ExternalProject_Add( - googletest-distribution - URL https://github.com/google/googletest/archive/release-1.8.0.zip - TIMEOUT 10 - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - INSTALL_COMMAND "" -) - -# Specify include dir -ExternalProject_Get_Property(googletest-distribution SOURCE_DIR) -set(GOOGLETEST_DISTRIB_SOURCE_DIR "${SOURCE_DIR}") - -ExternalProject_Add( - googletest - DEPENDS googletest-distribution - DOWNLOAD_COMMAND "" - SOURCE_DIR "${GOOGLETEST_DISTRIB_SOURCE_DIR}/googletest" - CMAKE_ARGS -DCMAKE_CXX_FLAGS=-m32 - # Disable install step - INSTALL_COMMAND "" - # Wrap download, configure and build steps in a script to log output - LOG_DOWNLOAD ON - LOG_CONFIGURE ON - LOG_BUILD ON) - - -# Specify include dir -set(GTEST_INCLUDE_DIR ${GOOGLETEST_DISTRIB_SOURCE_DIR}/googletest/include) - -# Library -ExternalProject_Get_Property(googletest BINARY_DIR) -set(GOOGLETEST_BINARY_DIR "${BINARY_DIR}") -set(GTEST_LIBRARY_PATH ${GOOGLETEST_BINARY_DIR}/${CMAKE_FIND_LIBRARY_PREFIXES}gtest.a) -set(GTEST_LIBRARY gtest) -add_library(${GTEST_LIBRARY} UNKNOWN IMPORTED) -set_property(TARGET ${GTEST_LIBRARY} PROPERTY IMPORTED_LOCATION - ${GTEST_LIBRARY_PATH} ) -add_dependencies(${GTEST_LIBRARY} googletest) - -include_directories(${GTEST_INCLUDE_DIR}) file(GLOB_RECURSE ORCT2_RIDE_SOURCES "src/ride/*/*.c") file(GLOB_RECURSE ORCT2_RIDE_DEP_SOURCES "src/ride/ride_data.c" "src/ride/track_data.c" "src/ride/track_paint.c" "src/addresses.c" "src/diagnostic.c" "src/hook.c" "src/paint/map_element/map_element.c") file(GLOB_RECURSE ORCT2_PAINT_TEST_SOURCES "PaintTest/*.c" "PaintTest/*.cpp" "PaintTest/*.h") add_executable(test-paint ${ORCT2_RIDE_SOURCES} ${ORCT2_RIDE_DEP_SOURCES} ${ORCT2_PAINT_TEST_SOURCES}) -target_link_libraries(test-paint gtest) set_target_properties(test-paint PROPERTIES COMPILE_FLAGS "-DUSE_GTEST -DNO_VEHICLES") set(CPACK_PACKAGE_VERSION_MAJOR 0) diff --git a/PaintTest/data.c b/PaintTest/data.c index bfb6047f76..09c69abdd7 100644 --- a/PaintTest/data.c +++ b/PaintTest/data.c @@ -17,355 +17,355 @@ #include "../src/common.h" const utf8string RideNames[91] = { - "Spiral Roller Coaster", - "Stand-up Roller Coaster", - "Suspended Swinging Coaster", - "Inverted Roller Coaster", - "Junior Roller Coaster", - "Miniature Railway", + "SpiralRollerCoaster", + "StandUpRollerCoaster", + "SuspendedSwingingCoaster", + "InvertedRollerCoaster", + "JuniorRollerCoaster", + "MiniatureRailway", "Monorail", - "Mini Suspended Coaster", - "Boat Ride", - "Wooden Wild Mouse", + "MiniSuspendedCoaster", + "BoatRide", + "WoodenWildMouse", "Steeplechase", - "Car Ride", - "Launched Freefall", - "Bobsleigh Coaster", - "Observation Tower", - "Looping Roller Coaster", - "Dinghy Slide", - "Mine Train Coaster", + "CarRide", + "LaunchedFreefall", + "BobsleighCoaster", + "ObservationTower", + "LoopingRollerCoaster", + "DinghySlide", + "MineTrainCoaster", "Chairlift", - "Corkscrew Roller Coaster", + "CorkscrewRollerCoaster", "Maze", - "Spiral Slide", - "Go Karts", - "Log Flume", - "River Rapids", + "SpiralSlide", + "GoKarts", + "LogFlume", + "RiverRapids", "Dodgems", - "Pirate Ship", - "Swinging Inverter Ship", - "Food Stall", - "Unknown Stall", - "Drink Stall", - "Unknown Stall", + "PirateShip", + "SwingingInverterShip", + "FoodStall", + "1D", + "DrinkStall", + "1F", "Shop", - "Merry-Go-Round", - "Unknown Stall", - "Information Kiosk", + "MerryGoRound", + "22", + "InformationKiosk", "Toilets", - "Ferris Wheel", - "Motion Simulator", - "3D Cinema", - "Top Spin", - "Space Rings", - "Reverse Freefall Coaster", + "FerrisWheel", + "MotionSimulator", + "3DCinema", + "TopSpin", + "SpaceRings", + "ReverseFreefallCoaster", "Lift", - "Vertical Drop Roller Coaster", - "Cash Machine", + "VerticalDropRollerCoaster", + "CashMachine", "Twist", - "Haunted House", - "First Aid Room", - "Circus Show", - "Ghost Train", - "Steel Twister Roller Coaster", - "Wooden Roller Coaster", - "Side-Friction Roller Coaster", - "Wild Mouse", - "Multi-Dimension Roller Coaster", - "Unknown Ride", - "Flying Roller Coaster", - "Unknown Ride", - "Virginia Reel", - "Splash Boats", - "Mini Helicopters", - "Lay-down Roller Coaster", - "Suspended Monorail", - "Unknown Ride", - "Reverser Roller Coaster", - "Heartline Twister Coaster", - "Mini Golf", - "Giga Coaster", - "Roto-Drop", - "Flying Saucers", - "Crooked House", - "Monorail Cycles", - "Compact Inverted Coaster", - "Water Coaster", - "Air Powered Vertical Coaster", - "Inverted Hairpin Coaster", - "Magic Carpet", - "Submarine Ride", - "River Rafts", - "Unknown Ride", + "HauntedHouse", + "FirstAid", + "CircusShow", + "GhostTrain", + "TwisterRollerCoaster", + "WoodenRollerCoaster", + "SideFrictionRollerCoaster", + "WildMouse", + "MultiDimensionRollerCoaster", + "MultiDimensionRollerCoasterAlt", + "FlyingRollerCoaster", + "FlyingRollerCoasterAlt", + "VirginiaReel", + "SplashBoats", + "MiniHelicopters", + "LayDownRollerCoaster", + "SuspendedMonorail", + "LayDownRollerCoasterAlt", + "ReverserRollerCoaster", + "HeartlineTwisterCoaster", + "MiniGolf", + "GigaCoaster", + "RoToDrop", + "FlyingSaucers", + "CrookedHouse", + "MonorailCycles", + "CompactInvertedCoaster", + "WaterCoaster", + "AirPoweredVerticalCoaster", + "InvertedHairpinCoaster", + "MagicCarpet", + "SubmarineRide", + "RiverRafts", + "50", "Enterprise", - "Unknown Ride", - "Unknown Ride", - "Unknown Ride", - "Unknown Ride", - "Inverted Impulse Coaster", - "Mini Roller Coaster", - "Mine Ride", - "Unknown Ride", - "LIM Launched Roller Coaster", + "52", + "53", + "54", + "55", + "InvertedImpulseCoaster", + "MiniRollerCoaster", + "MineRide", + "59", + "LimLaunchedRollerCoaster", }; const utf8string TrackNames[256] = { "Flat", - "End Station", - "Begin Station", - "Middle Station", - "25 Deg Up", - "60 Deg Up", - "Flat to 25 deg Up", - "25 Deg up to 60 deg Up", - "60 Deg up to 25 deg Up", - "25 Deg up to Flat", - "25 Deg Down", - "60 Deg Down", - "Flat to 25 deg Down", - "25 Deg Down to 60 deg Down", - "60 Deg Down to 25 deg Down", - "25 Deg Down to Flat", - "Left Quarter Turn 5 Tiles", - "Right Quarter Turn 5 Tiles", - "Flat to Left Bank", - "Flat to Right Bank", - "Left Bank to Flat", - "Right Bank to Flat", - "Banked Left Quarter Turn 5 Tiles", - "Banked Right Quarter Turn 5 Tiles", - "Left Bank to 25 deg Up", - "Right Bank to 25 deg Up", - "25 Deg up to Left Bank", - "25 Deg up to Right Bank", - "Left Bank to 25 deg Down", - "Right Bank to 25 deg Down", - "25 Deg Down to Left Bank", - "25 Deg Down to Right Bank", - "Left Bank", - "Right Bank", - "Left Quarter Turn 5 Tiles 25 deg Up", - "Right Quarter Turn 5 Tiles 25 deg Up", - "Left Quarter Turn 5 Tiles 25 deg Down", - "Right Quarter Turn 5 Tiles 25 deg Down", - "S Bend Left", - "S Bend Right", - "Left Vertical Loop", - "Right Vertical Loop", - "Left Quarter Turn 3 Tiles", - "Right Quarter Turn 3 Tiles", - "Left Quarter Turn 3 Tiles Bank", - "Right Quarter Turn 3 Tiles Bank", - "Left Quarter Turn 3 Tiles 25 deg Up", - "Right Quarter Turn 3 Tiles 25 deg Up", - "Left Quarter Turn 3 Tiles 25 deg Down", - "Right Quarter Turn 3 Tiles 25 deg Down", - "Left Quarter Turn 1 Tile", - "Right Quarter Turn 1 Tile", - "Left Twist Down to Up", - "Right Twist Down to Up", - "Left Twist up to Down", - "Right Twist up to Down", - "Half Loop Up", - "Half Loop Down", - "Left Corkscrew Up", - "Right Corkscrew Up", - "Left Corkscrew Down", - "Right Corkscrew Down", - "Flat to 60 deg Up", - "60 Deg up to Flat", - "Flat to 60 deg Down", - "60 Deg Down to Flat", - "Tower Base", - "Tower Section", - "Flat Covered", - "25 Deg up Covered", - "60 Deg up Covered", - "Flat to 25 deg up Covered", - "25 Deg up to 60 deg up Covered", - "60 Deg up to 25 deg up Covered", - "25 Deg up to Flat Covered", - "25 Deg Down Covered", - "60 Deg Down Covered", - "Flat to 25 deg Down Covered", - "25 Deg Down to 60 deg Down Covered", - "60 Deg Down to 25 deg Down Covered", - "25 Deg Down to Flat Covered", - "Left Quarter Turn 5 Tiles Covered", - "Right Quarter Turn 5 Tiles Covered", - "S Bend Left Covered", - "S Bend Right Covered", - "Left Quarter Turn 3 Tiles Covered", - "Right Quarter Turn 3 Tiles Covered", - "Left Half Banked Helix up Small", - "Right Half Banked Helix up Small", - "Left Half Banked Helix Down Small", - "Right Half Banked Helix Down Small", - "Left Half Banked Helix up Large", - "Right Half Banked Helix up Large", - "Left Half Banked Helix Down Large", - "Right Half Banked Helix Down Large", - "Left Quarter Turn 1 Tile 60 deg Up", - "Right Quarter Turn 1 Tile 60 deg Up", - "Left Quarter Turn 1 Tile 60 deg Down", - "Right Quarter Turn 1 Tile 60 deg Down", + "EndStation", + "BeginStation", + "MiddleStation", + "25DegUp", + "60DegUp", + "FlatTo25DegUp", + "25DegUpTo60DegUp", + "60DegUpTo25DegUp", + "25DegUpToFlat", + "25DegDown", + "60DegDown", + "FlatTo25DegDown", + "25DegDownTo60DegDown", + "60DegDownTo25DegDown", + "25DegDownToFlat", + "LeftQuarterTurn5Tiles", + "RightQuarterTurn5Tiles", + "FlatToLeftBank", + "FlatToRightBank", + "LeftBankToFlat", + "RightBankToFlat", + "BankedLeftQuarterTurn5Tiles", + "BankedRightQuarterTurn5Tiles", + "LeftBankTo25DegUp", + "RightBankTo25DegUp", + "25DegUpToLeftBank", + "25DegUpToRightBank", + "LeftBankTo25DegDown", + "RightBankTo25DegDown", + "25DegDownToLeftBank", + "25DegDownToRightBank", + "LeftBank", + "RightBank", + "LeftQuarterTurn5Tiles25DegUp", + "RightQuarterTurn5Tiles25DegUp", + "LeftQuarterTurn5Tiles25DegDown", + "RightQuarterTurn5Tiles25DegDown", + "SBendLeft", + "SBendRight", + "LeftVerticalLoop", + "RightVerticalLoop", + "LeftQuarterTurn3Tiles", + "RightQuarterTurn3Tiles", + "LeftQuarterTurn3TilesBank", + "RightQuarterTurn3TilesBank", + "LeftQuarterTurn3Tiles25DegUp", + "RightQuarterTurn3Tiles25DegUp", + "LeftQuarterTurn3Tiles25DegDown", + "RightQuarterTurn3Tiles25DegDown", + "LeftQuarterTurn1Tile", + "RightQuarterTurn1Tile", + "LeftTwistDownToUp", + "RightTwistDownToUp", + "LeftTwistUpToDown", + "RightTwistUpToDown", + "HalfLoopUp", + "HalfLoopDown", + "LeftCorkscrewUp", + "RightCorkscrewUp", + "LeftCorkscrewDown", + "RightCorkscrewDown", + "FlatTo60DegUp", + "60DegUpToFlat", + "FlatTo60DegDown", + "60DegDownToFlat", + "TowerBase", + "TowerSection", + "FlatCovered", + "25DegUpCovered", + "60DegUpCovered", + "FlatTo25DegUpCovered", + "25DegUpTo60DegUpCovered", + "60DegUpTo25DegUpCovered", + "25DegUpToFlatCovered", + "25DegDownCovered", + "60DegDownCovered", + "FlatTo25DegDownCovered", + "25DegDownTo60DegDownCovered", + "60DegDownTo25DegDownCovered", + "25DegDownToFlatCovered", + "LeftQuarterTurn5TilesCovered", + "RightQuarterTurn5TilesCovered", + "SBendLeftCovered", + "SBendRightCovered", + "LeftQuarterTurn3TilesCovered", + "RightQuarterTurn3TilesCovered", + "LeftHalfBankedHelixUpSmall", + "RightHalfBankedHelixUpSmall", + "LeftHalfBankedHelixDownSmall", + "RightHalfBankedHelixDownSmall", + "LeftHalfBankedHelixUpLarge", + "RightHalfBankedHelixUpLarge", + "LeftHalfBankedHelixDownLarge", + "RightHalfBankedHelixDownLarge", + "LeftQuarterTurn1Tile60DegUp", + "RightQuarterTurn1Tile60DegUp", + "LeftQuarterTurn1Tile60DegDown", + "RightQuarterTurn1Tile60DegDown", "Brakes", - "Rotation Control Toggle", - "Inverted 90 deg up to Flat Quarter Loop/Maze", - "Left Quarter Banked Helix Large Up", - "Right Quarter Banked Helix Large Up", - "Left Quarter Banked Helix Large Down", - "Right Quarter Banked Helix Large Down", - "Left Quarter Helix Large Up", - "Right Quarter Helix Large Up", - "Left Quarter Helix Large Down", - "Right Quarter Helix Large Down", - "25 Deg up Left Banked", - "25 Deg up Right Banked", + "RotationControlToggle", + "Inverted90DegUpToFlatQuarterLoop_Maze", + "LeftQuarterBankedHelixLargeUp", + "RightQuarterBankedHelixLargeUp", + "LeftQuarterBankedHelixLargeDown", + "RightQuarterBankedHelixLargeDown", + "LeftQuarterHelixLargeUp", + "RightQuarterHelixLargeUp", + "LeftQuarterHelixLargeDown", + "RightQuarterHelixLargeDown", + "25DegUpLeftBanked", + "25DegUpRightBanked", "Waterfall", "Rapids", - "On Ride Photo", - "25 Deg Down Left Banked", - "25 Deg Down Right Banked", - "Water Splash", - "Flat to 60 deg up Long Base", - "60 Deg up to Flat Long Base", + "OnRidePhoto", + "25DegDownLeftBanked", + "25DegDownRightBanked", + "WaterSplash", + "FlatTo60DegUpLongBase", + "60DegUpToFlatLongBase", "Whirlpool", - "Flat to 60 deg Down Long Base", - "60 Deg up to Flat Long Base 122", - "Cable Lift Hill", - "Reverse Whoa Belly Slope", - "Reverse Whoa Belly Vertical", - "90 Deg Up", - "90 Deg Down", - "60 Deg up to 90 deg Up", - "90 Deg Down to 60 deg Down", - "90 Deg up to 60 deg Up", - "60 Deg Down to 90 deg Down", - "Brake for Drop", - "Left Eighth to Diag", - "Right Eighth to Diag", - "Left Eighth to Orthogonal", - "Right Eighth to Orthogonal", - "Left Eighth Bank to Diag", - "Right Eighth Bank to Diag", - "Left Eighth Bank to Orthogonal", - "Right Eighth Bank to Orthogonal", - "Diag Flat", - "Diag 25 deg Up", - "Diag 60 deg Up", - "Diag Flat to 25 deg Up", - "Diag 25 deg up to 60 deg Up", - "Diag 60 deg up to 25 deg Up", - "Diag 25 deg up to Flat", - "Diag 25 deg Down", - "Diag 60 deg Down", - "Diag Flat to 25 deg Down", - "Diag 25 deg Down to 60 deg Down", - "Diag 60 deg Down to 25 deg Down", - "Diag 25 deg Down to Flat", - "Diag Flat to 60 deg Up", - "Diag 60 deg up to Flat", - "Diag Flat to 60 deg Down", - "Diag 60 deg Down to Flat", - "Diag Flat to Left Bank", - "Diag Flat to Right Bank", - "Diag Left Bank to Flat", - "Diag Right Bank to Flat", - "Diag Left Bank to 25 deg Up", - "Diag Right Bank to 25 deg Up", - "Diag 25 deg up to Left Bank", - "Diag 25 deg up to Right Bank", - "Diag Left Bank to 25 deg Down", - "Diag Right Bank to 25 deg Down", - "Diag 25 deg Down to Left Bank", - "Diag 25 deg Down to Right Bank", - "Diag Left Bank", - "Diag Right Bank", - "Log Flume Reverser", - "Spinning Tunnel", - "Left Barrel Roll up to Down", - "Right Barrel Roll up to Down", - "Left Barrel Roll Down to Up", - "Right Barrel Roll Down to Up", - "Left Bank to Left Quarter Turn 3 Tiles 25 deg Up", - "Right Bank to Right Quarter Turn 3 Tiles 25 deg Up", - "Left Quarter Turn 3 Tiles 25 deg Down to Left Bank", - "Right Quarter Turn 3 Tiles 25 deg Down to Right Bank", - "Powered Lift", - "Left Large Half Loop Up", - "Right Large Half Loop Up", - "Right Large Half Loop Down", - "Left Large Half Loop Down", - "Left Flyer Twist Up", - "Right Flyer Twist Up", - "Left Flyer Twist Down", - "Right Flyer Twist Down", - "Flyer Half Loop Up", - "Flyer Half Loop Down", - "Left Flyer Corkscrew Up", - "Right Flyer Corkscrew Up", - "Left Flyer Corkscrew Down", - "Right Flyer Corkscrew Down", - "Heartline Transfer Up", - "Heartline Transfer Down", - "Left Heartline Roll", - "Right Heartline Roll", - "Mini Golf Hole A", - "Mini Golf Hole B", - "Mini Golf Hole C", - "Mini Golf Hole D", - "Mini Golf Hole E", - "Multidim Inverted Flat to 90 deg Quarter Loop Down", - "90 Deg to Inverted Flat Quarter Loop Up", - "Inverted Flat to 90 deg Quarter Loop Down", - "Left Curved Lift Hill", - "Right Curved Lift Hill", - "Left Reverser", - "Right Reverser", - "Air Thrust top Cap", - "Air Thrust Vertical Down", - "Air Thrust Vertical Down to Level", - "Block Brakes", - "Left Banked Quarter Turn 3 Tile 25 deg Up", - "Right Banked Quarter Turn 3 Tile 25 deg Up", - "Left Banked Quarter Turn 3 Tile 25 deg Down", - "Right Banked Quarter Turn 3 Tile 25 deg Down", - "Left Banked Quarter Turn 5 Tile 25 deg Up", - "Right Banked Quarter Turn 5 Tile 25 deg Up", - "Left Banked Quarter Turn 5 Tile 25 deg Down", - "Right Banked Quarter Turn 5 Tile 25 deg Down", - "25 Deg up to Left Banked 25 deg Up", - "25 Deg up to Right Banked 25 deg Up", - "Left Banked 25 deg up to 25 deg Up", - "Right Banked 25 deg up to 25 deg Up", - "25 Deg Down to Left Banked 25 deg Down", - "25 Deg Down to Right Banked 25 deg Down", - "Left Banked 25 deg Down to 25 deg Down", - "Right Banked 25 deg Down to 25 deg Down", - "Left Banked Flat to Left Banked 25 deg Up", - "Right Banked Flat to Right Banked 25 deg Up", - "Left Banked 25 deg up to Left Banked Flat", - "Right Banked 25 deg up to Right Banked Flat", - "Left Banked Flat to Left Banked 25 deg Down", - "Right Banked Flat to Right Banked 25 deg Down", - "Left Banked 25 deg Down to Left Banked Flat", - "Right Banked 25 deg Down to Right Banked Flat", - "Flat to Left Banked 25 deg Up", - "Flat to Right Banked 25 deg Up", - "Left Banked 25 deg up to Flat", - "Right Banked 25 deg up to Flat", - "Flat to Left Banked 25 deg Down", - "Flat to Right Banked 25 deg Down", - "Left Banked 25 deg Down to Flat", - "Right Banked 25 deg Down to Flat", - "Left Quarter Turn 1 Tile 90 deg Up", - "Right Quarter Turn 1 Tile 90 deg Up", - "Left Quarter Turn 1 Tile 90 deg Down", - "Right Quarter Turn 1 Tile 90 deg Down", - "Multidim 90 deg up to Inverted Flat Quarter Loop", - "Multidim Flat to 90 deg Down Quarter Loop", + "FlatTo60DegDownLongBase", + "60DegUpToFlatLongBase122", + "CableLiftHill", + "ReverseWhoaBellySlope", + "ReverseWhoaBellyVertical", + "90DegUp", + "90DegDown", + "60DegUpTo90DegUp", + "90DegDownTo60DegDown", + "90DegUpTo60DegUp", + "60DegDownTo90DegDown", + "BrakeForDrop", + "LeftEighthToDiag", + "RightEighthToDiag", + "LeftEighthToOrthogonal", + "RightEighthToOrthogonal", + "LeftEighthBankToDiag", + "RightEighthBankToDiag", + "LeftEighthBankToOrthogonal", + "RightEighthBankToOrthogonal", + "DiagFlat", + "Diag25DegUp", + "Diag60DegUp", + "DiagFlatTo25DegUp", + "Diag25DegUpTo60DegUp", + "Diag60DegUpTo25DegUp", + "Diag25DegUpToFlat", + "Diag25DegDown", + "Diag60DegDown", + "DiagFlatTo25DegDown", + "Diag25DegDownTo60DegDown", + "Diag60DegDownTo25DegDown", + "Diag25DegDownToFlat", + "DiagFlatTo60DegUp", + "Diag60DegUpToFlat", + "DiagFlatTo60DegDown", + "Diag60DegDownToFlat", + "DiagFlatToLeftBank", + "DiagFlatToRightBank", + "DiagLeftBankToFlat", + "DiagRightBankToFlat", + "DiagLeftBankTo25DegUp", + "DiagRightBankTo25DegUp", + "Diag25DegUpToLeftBank", + "Diag25DegUpToRightBank", + "DiagLeftBankTo25DegDown", + "DiagRightBankTo25DegDown", + "Diag25DegDownToLeftBank", + "Diag25DegDownToRightBank", + "DiagLeftBank", + "DiagRightBank", + "LogFlumeReverser", + "SpinningTunnel", + "LeftBarrelRollUpToDown", + "RightBarrelRollUpToDown", + "LeftBarrelRollDownToUp", + "RightBarrelRollDownToUp", + "LeftBankToLeftQuarterTurn3Tiles25DegUp", + "RightBankToRightQuarterTurn3Tiles25DegUp", + "LeftQuarterTurn3Tiles25DegDownToLeftBank", + "RightQuarterTurn3Tiles25DegDownToRightBank", + "PoweredLift", + "LeftLargeHalfLoopUp", + "RightLargeHalfLoopUp", + "RightLargeHalfLoopDown", + "LeftLargeHalfLoopDown", + "LeftFlyerTwistUp", + "RightFlyerTwistUp", + "LeftFlyerTwistDown", + "RightFlyerTwistDown", + "FlyerHalfLoopUp", + "FlyerHalfLoopDown", + "LeftFlyerCorkscrewUp", + "RightFlyerCorkscrewUp", + "LeftFlyerCorkscrewDown", + "RightFlyerCorkscrewDown", + "HeartlineTransferUp", + "HeartlineTransferDown", + "LeftHeartlineRoll", + "RightHeartlineRoll", + "MiniGolfHoleA", + "MiniGolfHoleB", + "MiniGolfHoleC", + "MiniGolfHoleD", + "MiniGolfHoleE", + "MultidimInvertedFlatTo90DegQuarterLoopDown", + "90DegToInvertedFlatQuarterLoopUp", + "InvertedFlatTo90DegQuarterLoopDown", + "LeftCurvedLiftHill", + "RightCurvedLiftHill", + "LeftReverser", + "RightReverser", + "AirThrustTopCap", + "AirThrustVerticalDown", + "AirThrustVerticalDownToLevel", + "BlockBrakes", + "LeftBankedQuarterTurn3Tile25DegUp", + "RightBankedQuarterTurn3Tile25DegUp", + "LeftBankedQuarterTurn3Tile25DegDown", + "RightBankedQuarterTurn3Tile25DegDown", + "LeftBankedQuarterTurn5Tile25DegUp", + "RightBankedQuarterTurn5Tile25DegUp", + "LeftBankedQuarterTurn5Tile25DegDown", + "RightBankedQuarterTurn5Tile25DegDown", + "25DegUpToLeftBanked25DegUp", + "25DegUpToRightBanked25DegUp", + "LeftBanked25DegUpTo25DegUp", + "RightBanked25DegUpTo25DegUp", + "25DegDownToLeftBanked25DegDown", + "25DegDownToRightBanked25DegDown", + "LeftBanked25DegDownTo25DegDown", + "RightBanked25DegDownTo25DegDown", + "LeftBankedFlatToLeftBanked25DegUp", + "RightBankedFlatToRightBanked25DegUp", + "LeftBanked25DegUpToLeftBankedFlat", + "RightBanked25DegUpToRightBankedFlat", + "LeftBankedFlatToLeftBanked25DegDown", + "RightBankedFlatToRightBanked25DegDown", + "LeftBanked25DegDownToLeftBankedFlat", + "RightBanked25DegDownToRightBankedFlat", + "FlatToLeftBanked25DegUp", + "FlatToRightBanked25DegUp", + "LeftBanked25DegUpToFlat", + "RightBanked25DegUpToFlat", + "FlatToLeftBanked25DegDown", + "FlatToRightBanked25DegDown", + "LeftBanked25DegDownToFlat", + "RightBanked25DegDownToFlat", + "LeftQuarterTurn1Tile90DegUp", + "RightQuarterTurn1Tile90DegUp", + "LeftQuarterTurn1Tile90DegDown", + "RightQuarterTurn1Tile90DegDown", + "Multidim90DegUpToInvertedFlatQuarterLoop", + "MultidimFlatTo90DegDownQuarterLoop", }; const utf8string FlatTrackNames[256] = { @@ -464,7 +464,7 @@ const utf8string FlatTrackNames[256] = { "", "", "", - "FLAT_TRACK_ELEM_1_X_4_A = 95,", + "1x4_A", "", "", "", @@ -479,20 +479,20 @@ const utf8string FlatTrackNames[256] = { "", "", "", - "FLAT_TRACK_ELEM_2_X_2 = 110,", - "FLAT_TRACK_ELEM_4_X_4 = 111,", + "2x2", + "4x4", "", "", "", "", - "FLAT_TRACK_ELEM_1_X_5 = 116,", + "1x5", "", - "FLAT_TRACK_ELEM_1_X_1_A = 118,", - "FLAT_TRACK_ELEM_1_X_4_B = 119,", + "1x1_A", + "1x4_B", "", - "FLAT_TRACK_ELEM_1_X_1_B = 121,", - "FLAT_TRACK_ELEM_1_X_4_C = 122,", - "FLAT_TRACK_ELEM_3_X_3 = 123,", + "1x1_B", + "1x4_C", + "3x3", "", "", "", diff --git a/PaintTest/gtest.cpp b/PaintTest/gtest.cpp index 7f8733152a..802f959415 100644 --- a/PaintTest/gtest.cpp +++ b/PaintTest/gtest.cpp @@ -15,54 +15,129 @@ #pragma endregion #ifdef USE_GTEST + #include #include #include -#include "gtest/gtest.h" extern "C" { #include "main.h" #include "../src/rct2.h" +#include "../src/ride/ride.h" +#include "../src/ride/ride_data.h" +#include "../src/ride/track.h" +#include "../src/ride/track_data.h" } +typedef struct { + uint8 rideType; + std::vector trackTypes; +} TestCase; + +extern const utf8string RideNames[91]; +extern const utf8string TrackNames[256]; +extern const utf8string FlatTrackNames[256]; + int main(int argc, char *argv[]) { - initHooks(); - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); + std::vector testCases; + + bool gTestColor = true; + for (int i = 0; i < argc; ++i) { + char *arg = argv[i]; + if (strcmp(arg, "--gtest_color=no") == 0) { + gTestColor = false; + } + } + + const utf8 *ansiRed = gTestColor ? "\x1b[31m" : ""; + const utf8 *ansiGreen = gTestColor ? "\x1b[32m" : ""; + const utf8 *ansiReset = gTestColor ? "\x1b[0m" : ""; + + for (uint8 rideType = 0; rideType < 91; rideType++) { + if (!rideIsImplemented(rideType)) { + continue; + } + + TestCase testCase = { + .rideType = rideType + }; + + if (ride_type_has_flag(rideType, RIDE_TYPE_FLAG_FLAT_RIDE)) { + testCase.trackTypes.push_back(RideConstructionDefaultTrackType[rideType]); + } else { + for (int trackType = 0; trackType < 256; trackType++) { + if (rideSupportsTrackType(rideType, trackType)) { + testCase.trackTypes.push_back(trackType); + } + } + } + + testCases.push_back(testCase); + } + + int testCaseCount = (int) testCases.size(); + int testCount = 0; + for (auto &&tc : testCases) { + testCount += tc.trackTypes.size(); + } + + printf("%s[==========]%s Running %d tests from %d test cases.\n", ansiGreen, ansiReset, testCount, testCaseCount); + printf("%s[----------]%s Global test environment set-up.\n", ansiGreen, ansiReset); + initHooks(); + + int successCount = 0; + std::vector failures; + for (auto &&tc : testCases) { + const utf8string rideTypeName = RideNames[tc.rideType]; + printf("%s[----------]%s %lu tests from %s\n", ansiGreen, ansiReset, tc.trackTypes.size(), rideTypeName); + + for (auto &&trackType : tc.trackTypes) { + utf8string trackTypeName; + if (ride_type_has_flag(tc.rideType, RIDE_TYPE_FLAG_FLAT_RIDE)) { + trackTypeName = FlatTrackNames[trackType]; + } else { + trackTypeName = TrackNames[trackType]; + } + + printf("%s[ RUN ]%s %s.%s\n", ansiGreen, ansiReset, rideTypeName, trackTypeName); + bool success = testTrackPainting(tc.rideType, trackType); + if (!success) { + printf("%s[ FAILED ]%s %s.%s (0 ms)\n", ansiRed, ansiReset, rideTypeName, trackTypeName); + utf8string testCaseName = new utf8[64]; + sprintf(testCaseName, "%s.%s", rideTypeName, trackTypeName); + failures.push_back(testCaseName); + } else { + printf("%s[ OK ]%s %s.%s (0 ms)\n", ansiGreen, ansiReset, rideTypeName, trackTypeName); + successCount++; + } + } + + printf("%s[----------]%s %lu tests from %s (0 ms total)\n", ansiGreen, ansiReset, tc.trackTypes.size(), + rideTypeName); + } + printf("\n"); + + printf("%s[----------]%s Global test environment tear-down\n", ansiGreen, ansiReset); + printf("%s[==========]%s %d tests from %d test cases ran. (0 ms total).\n", ansiGreen, ansiReset, testCount, + testCaseCount); + printf("%s[ PASSED ]%s %d tests.\n", ansiGreen, ansiReset, successCount); + + if (failures.size() > 0) { + printf("%s[ FAILED ]%s %lu tests, listed below:\n", ansiRed, ansiReset, failures.size()); + + for (auto &&failure : failures) { + printf("%s[ FAILED ]%s %s\n", ansiRed, ansiReset, failure); + delete(failure); + } + + printf("\n"); + + printf("%lu FAILED TESTS\n", failures.size()); + + return 1; + } + + return 0; } - -class RidePaintTest : public testing::TestWithParam { -}; - -TEST_P(RidePaintTest, TestRidePainting) { - bool success = testRide(GetParam()); - - ASSERT_TRUE(success); -} - -std::vector ReadTestCasesFromDisk() { - std::vector rides; - - for (int i = 0; i < 91; i++) { - if (!rideIsImplemented(i)) { - continue; - } - rides.push_back(i); - } - - return rides; -} - -inline std::string CustomParamNameFunction(const ::testing::TestParamInfo& info) { - return std::to_string(info.param); -} - -INSTANTIATE_TEST_CASE_P( - ParameterizedTest, // Instantiation name can be chosen arbitrarily. - RidePaintTest, - testing::ValuesIn(ReadTestCasesFromDisk()), - CustomParamNameFunction -); - #endif // USE_GTEST diff --git a/PaintTest/main.c b/PaintTest/main.c index 86da168469..3902a8b4bd 100644 --- a/PaintTest/main.c +++ b/PaintTest/main.c @@ -476,6 +476,18 @@ int getTrackSequenceCount(uint8 rideType, uint8 trackType) { return sequenceCount; } +bool rideSupportsTrackType(int rideType, int trackType) { + TRACK_PAINT_FUNCTION_GETTER newPaintGetter = RideTypeTrackPaintFunctions[rideType]; + + if (newPaintGetter == NULL) { + return false; + } + + bool supportsTrackType = (newPaintGetter(trackType, 0) != NULL); + + return supportsTrackType; +} + bool testTrackElement(uint8 rideType, uint8 trackType, utf8string *error) { if (rideType == RIDE_TYPE_CHAIRLIFT) { if (trackType == TRACK_ELEM_BEGIN_STATION || trackType == TRACK_ELEM_MIDDLE_STATION || trackType == TRACK_ELEM_END_STATION) { @@ -595,6 +607,26 @@ bool rideIsImplemented(int rideType) { return (newPaintGetter != 0); } +bool testTrackPainting(int rideType, int trackType) { + TRACK_PAINT_FUNCTION_GETTER newPaintGetter = RideTypeTrackPaintFunctions[rideType]; + if (newPaintGetter == NULL) { + return false; + } + + if (newPaintGetter(trackType, 0) == NULL) { + return false; + } + + utf8string error = malloc(2048); + bool success = testTrackElement(rideType, trackType, &error); + if (!success) { + printf("%s\n", error); + } + free(error); + + return success; +} + bool testRide(int rideType) { TRACK_PAINT_FUNCTION_GETTER newPaintGetter = RideTypeTrackPaintFunctions[rideType]; diff --git a/PaintTest/main.h b/PaintTest/main.h index 8e9f9403d0..0254acc619 100644 --- a/PaintTest/main.h +++ b/PaintTest/main.h @@ -17,3 +17,5 @@ bool testRide(int rideType); void initHooks(); bool rideIsImplemented(int rideType); +bool rideSupportsTrackType(int rideType, int trackType); +bool testTrackPainting(int rideType, int trackType);