Advertisement
zynamo

testGameView

Jan 21st, 2018
316
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 12.28 KB | None | 0 0
  1. ////////////////////////////////////////////////////////////////////////
  2. // COMP2521 18x1 ... the Fury of Dracula
  3. // testGameView.c: test the GameView ADT
  4. //
  5. // As supplied, these are very simple tests.  You should write more!
  6. // Don't forget to be rigorous and thorough while writing tests.
  7. //
  8. // 2014-07-01   v1.0    Team Dracula <cs2521@cse.unsw.edu.au>
  9. // 2017-12-01   v1.1    Team Dracula <cs2521@cse.unsw.edu.au>
  10.  
  11. #include <assert.h>
  12. #include <stdbool.h>
  13. #include <stdio.h>
  14. #include <stdlib.h>
  15. #include <string.h>
  16.  
  17. #include "GameView.h"
  18.  
  19. int
  20. main (int argc, char *argv[])
  21. {
  22.     do {////////////////////////////////////////////////////////////////
  23.         puts ("Test basic empty initialisation");
  24.  
  25.         char *trail = "";
  26.         PlayerMessage messages[] = {};
  27.         GameView gv = newGameView (trail, messages);
  28.  
  29.         assert (getCurrentPlayer (gv) == PLAYER_LORD_GODALMING);
  30.         assert (getRound (gv) == 0);
  31.         assert (getHealth (gv, PLAYER_DR_SEWARD) ==
  32.                 GAME_START_HUNTER_LIFE_POINTS);
  33.         assert (getHealth (gv, PLAYER_DRACULA) ==
  34.                 GAME_START_BLOOD_POINTS);
  35.         assert (getScore (gv) == GAME_START_SCORE);
  36.         assert (getLocation (gv, PLAYER_LORD_GODALMING) ==
  37.                 UNKNOWN_LOCATION);
  38.  
  39.         puts ("passed");
  40.         disposeGameView (gv);
  41.     } while (0);
  42.  
  43.  
  44.     do {////////////////////////////////////////////////////////////////
  45.         puts ("Test for Dracula trail and basic functions");
  46.  
  47.         char *trail =
  48.             "GST.... SAO.... HZU.... MBB.... DC?....";
  49.         PlayerMessage messages[] = {
  50.             "Hello", "Rubbish", "Stuff", "", "Mwahahah"};
  51.         GameView gv = newGameView (trail, messages);
  52.  
  53.         assert (getCurrentPlayer (gv) == PLAYER_LORD_GODALMING);
  54.         assert (getRound (gv) == 1);
  55.         assert (getLocation (gv, PLAYER_LORD_GODALMING) == STRASBOURG);
  56.         assert (getLocation (gv, PLAYER_DR_SEWARD) == ATLANTIC_OCEAN);
  57.         assert (getLocation (gv, PLAYER_VAN_HELSING) == ZURICH);
  58.         assert (getLocation (gv, PLAYER_MINA_HARKER) == BAY_OF_BISCAY);
  59.         assert (getLocation (gv, PLAYER_DRACULA) == CITY_UNKNOWN);
  60.         assert (getHealth (gv, PLAYER_DRACULA) ==
  61.                 GAME_START_BLOOD_POINTS);
  62.  
  63.         puts ("passed");
  64.         disposeGameView (gv);
  65.     } while (0);
  66.  
  67.  
  68.     do {////////////////////////////////////////////////////////////////
  69.         puts ("Test for encountering Dracula and hunter history");
  70.  
  71.         char *trail =
  72.             "GST.... SAO.... HCD.... MAO.... DGE.... "
  73.             "GGED...";
  74.         PlayerMessage messages[] = {
  75.             "Hello", "Rubbish",  "Stuff", "", "Mwahahah",
  76.             "Aha!"};
  77.         GameView gv = newGameView (trail, messages);
  78.  
  79.         assert (getLocation (gv, PLAYER_DRACULA) == GENEVA);
  80.         assert (getHealth (gv, PLAYER_LORD_GODALMING) == 5);
  81.         assert (getHealth (gv, PLAYER_DRACULA) == 30);
  82.         assert (getLocation (gv, PLAYER_LORD_GODALMING) == GENEVA);
  83.  
  84.         LocationID history[TRAIL_SIZE];
  85.         getHistory (gv, PLAYER_DRACULA, history);
  86.         assert (history[0] == GENEVA);
  87.         assert (history[1] == UNKNOWN_LOCATION);
  88.  
  89.         getHistory (gv, PLAYER_LORD_GODALMING, history);
  90.         assert (history[0] == GENEVA);
  91.         assert (history[1] == STRASBOURG);
  92.         assert (history[2] == UNKNOWN_LOCATION);
  93.  
  94.         getHistory (gv, PLAYER_DR_SEWARD, history);
  95.         assert (history[0] == ATLANTIC_OCEAN);
  96.         assert (history[1] == UNKNOWN_LOCATION);
  97.  
  98.         puts ("passed");
  99.         disposeGameView (gv);
  100.     } while (0);
  101.  
  102.  
  103.     do {////////////////////////////////////////////////////////////////
  104.         puts ("Test for Dracula doubling back at sea, "
  105.               "and losing blood points (Hunter View)");
  106.  
  107.         char *trail =
  108.             "GGE.... SGE.... HGE.... MGE.... DS?.... "
  109.             "GST.... SST.... HST.... MST.... DD1....";
  110.         PlayerMessage messages[] = {
  111.             "Hello", "Rubbish", "Stuff", "", "Mwahahah",
  112.             "Aha!", "", "", "", "Back I go"};
  113.         GameView gv = newGameView (trail, messages);
  114.  
  115.         assert (getCurrentPlayer (gv) == 0);
  116.         assert (getHealth (gv, PLAYER_DRACULA) ==
  117.                 GAME_START_BLOOD_POINTS - 4);
  118.         assert (getLocation (gv, PLAYER_DRACULA) == DOUBLE_BACK_1);
  119.  
  120.         LocationID history[TRAIL_SIZE];
  121.         getHistory (gv, PLAYER_DRACULA, history);
  122.         assert (history[0] == DOUBLE_BACK_1);
  123.         assert (history[1] == SEA_UNKNOWN);
  124.  
  125.         puts ("passed");
  126.         disposeGameView (gv);
  127.     } while (0);
  128.  
  129.  
  130.     do {////////////////////////////////////////////////////////////////
  131.         puts ("Test for Dracula doubling back at sea, "
  132.               "and losing blood points (Drac View)");
  133.  
  134.         char *trail =
  135.             "GGE.... SGE.... HGE.... MGE.... DEC.... "
  136.             "GST.... SST.... HST.... MST.... DD1....";
  137.         PlayerMessage messages[] = {
  138.             "Hello", "Rubbish", "Stuff", "", "Mwahahah",
  139.             "Aha!", "", "", "", "Back I go"};
  140.         GameView gv = newGameView (trail, messages);
  141.  
  142.         assert (getCurrentPlayer (gv) == 0);
  143.         assert (getHealth (gv, PLAYER_DRACULA) ==
  144.                 GAME_START_BLOOD_POINTS - 4);
  145.         assert (getLocation (gv, PLAYER_DRACULA) == DOUBLE_BACK_1);
  146.  
  147.         LocationID history[TRAIL_SIZE];
  148.         getHistory (gv, PLAYER_DRACULA, history);
  149.         assert (history[0] == DOUBLE_BACK_1);
  150.         assert (history[1] == ENGLISH_CHANNEL);
  151.  
  152.         puts ("passed");
  153.         disposeGameView (gv);
  154.     } while (0);
  155.  
  156.  
  157.     do {////////////////////////////////////////////////////////////////
  158.         puts ("Test for connections");
  159.         char *trail = "";
  160.         PlayerMessage messages[] = {};
  161.         GameView gv = newGameView (trail, messages);
  162.  
  163.         do {
  164.             puts ("Checking Galatz road connections");
  165.             int size, *edges = connectedLocations (gv, &size,
  166.                 GALATZ, PLAYER_LORD_GODALMING, 0, true, false, false);
  167.  
  168.             bool seen[NUM_MAP_LOCATIONS] = {false};
  169.             for (int i = 0; i < size; i++)
  170.                 seen[edges[i]] = true;
  171.  
  172.             assert (size == 5);
  173.             assert (seen[GALATZ]);
  174.             assert (seen[CONSTANTA]);
  175.             assert (seen[BUCHAREST]);
  176.             assert (seen[KLAUSENBURG]);
  177.             assert (seen[CASTLE_DRACULA]);
  178.  
  179.             free (edges);
  180.         } while (0);
  181.  
  182.         do {
  183.             puts ("Checking Ionian Sea sea connections");
  184.             int size, *edges = connectedLocations (gv, &size,
  185.                 IONIAN_SEA, PLAYER_LORD_GODALMING, 0,
  186.                 false, false, true);
  187.  
  188.             bool seen[NUM_MAP_LOCATIONS] = {false};
  189.             for (int i = 0; i < size; i++)
  190.                 seen[edges[i]] = true;
  191.  
  192.             assert (size == 7);
  193.             assert (seen[IONIAN_SEA]);
  194.             assert (seen[BLACK_SEA]);
  195.             assert (seen[ADRIATIC_SEA]);
  196.             assert (seen[TYRRHENIAN_SEA]);
  197.             assert (seen[ATHENS]);
  198.             assert (seen[VALONA]);
  199.             assert (seen[SALONICA]);
  200.  
  201.             free (edges);
  202.         } while (0);
  203.  
  204.         do {
  205.             puts ("Checking Athens rail connections (none)");
  206.             int size, *edges = connectedLocations (gv, &size,
  207.                 ATHENS, PLAYER_LORD_GODALMING, 0,
  208.                 false, true, false);
  209.  
  210.             assert (size == 1);
  211.             assert (edges[0] == ATHENS);
  212.  
  213.             free (edges);
  214.         } while (0);
  215.  
  216.         puts ("passed");
  217.         disposeGameView (gv);
  218.     } while (0);
  219.  
  220.     // Extra tests:
  221.     do {////////////////////////////////////////////////////////////////
  222.         puts ("Test for encountering Dracula at the sea and hunter history (EXTRA TEST #1)");
  223.  
  224.         char *trail =
  225.             "GST.... SAM.... HBA.... MAM.... DEC.V.. "
  226.             "GAO.... SMI.... HMS.... MECVD..";
  227.         PlayerMessage messages[] = {
  228.             "Hello", "Rubbish",  "Stuff", "", "Mwahahah",
  229.             "Hmmm?", "Perhaps", "", "Gotcha"};
  230.         GameView gv = newGameView (trail, messages);
  231.  
  232.         assert (getLocation (gv, PLAYER_DRACULA) == ENGLISH_CHANNEL);
  233.         assert (getHealth (gv, PLAYER_MINA_HARKER) == 5);
  234.         assert (getHealth (gv, PLAYER_DRACULA) == 28);
  235.         assert (getLocation (gv, PLAYER_MINA_HARKER) == ENGLISH_CHANNEL);
  236.  
  237.         LocationID history[TRAIL_SIZE];
  238.         getHistory (gv, PLAYER_DRACULA, history);
  239.         assert (history[0] == ENGLISH_CHANNEL);
  240.         assert (history[1] == UNKNOWN_LOCATION);
  241.  
  242.         getHistory (gv, PLAYER_LORD_GODALMING, history);
  243.         assert (history[0] == ATLANTIC_OCEAN);
  244.         assert (history[1] == STRASBOURG);
  245.         assert (history[2] == UNKNOWN_LOCATION);
  246.  
  247.         getHistory (gv, PLAYER_DR_SEWARD, history);
  248.         assert (history[0] == MILAN);
  249.         assert (history[1] == AMSTERDAM);
  250.         assert (history[2] == UNKNOWN_LOCATION);
  251.  
  252.         getHistory (gv, PLAYER_VAN_HELSING, history);
  253.         assert (history[0] == MEDITERRANEAN_SEA);
  254.         assert (history[1] == BARCELONA);
  255.         assert (history[2] == UNKNOWN_LOCATION);
  256.  
  257.         getHistory (gv, PLAYER_MINA_HARKER, history);
  258.         assert (history[0] == ENGLISH_CHANNEL);
  259.         assert (history[1] == AMSTERDAM);
  260.         assert (history[2] == UNKNOWN_LOCATION);
  261.  
  262.         puts ("passed");
  263.         disposeGameView (gv);
  264.     } while (0);
  265.  
  266.     do {////////////////////////////////////////////////////////////////
  267.         puts ("Test for dracula regain blood at the castle after lost few blood (EXTRA TEST #2)");
  268.  
  269.         char *trail =
  270.             "GEC.... SBU.... HBA.... MBU.... DTS.V.. "
  271.             "GBU.... SME.... HEC.... MST.... DCD....";
  272.         PlayerMessage messages[] = {
  273.             "Hello", "Rubbish",  "Perhaps?", "", "Mwahahah?"
  274.             "Wait!", "Really?", "", "Gotcha?", "Mwahahah"};
  275.         GameView gv = newGameView (trail, messages);
  276.  
  277.         assert (getCurrentPlayer (gv) == 0);
  278.         assert (getHealth (gv, PLAYER_DRACULA) ==
  279.                 GAME_START_BLOOD_POINTS);
  280.         assert (getLocation (gv, PLAYER_DRACULA) == CASTLE_DRACULA);
  281.  
  282.         LocationID history[TRAIL_SIZE];
  283.         getHistory (gv, PLAYER_DRACULA, history);
  284.         assert (history[0] == CASTLE_DRACULA);
  285.         assert (history[1] == TYRRHENIAN_SEA);
  286.         assert (history[2] == UNKNOWN_LOCATION);
  287.  
  288.         puts ("passed");
  289.         disposeGameView (gv);
  290.     } while (0);
  291.  
  292.     do {////////////////////////////////////////////////////////////////
  293.         puts ("Test for connections (EXTRAS)");
  294.         char *trail = "";
  295.         PlayerMessage messages[] = {};
  296.         GameView gv = newGameView (trail, messages);
  297.  
  298.         do {
  299.             puts ("Checking Cologne rail connections");
  300.             int size, *edges = connectedLocations (gv, &size,
  301.                 COLOGNE, PLAYER_LORD_GODALMING, 0, false, true, false);
  302.  
  303.             bool seen[NUM_MAP_LOCATIONS] = {false};
  304.             for (int i = 0; i < size; i++)
  305.                 seen[edges[i]] = true;
  306.  
  307.             assert (size == 3);
  308.             assert (seen[COLOGNE]);
  309.             assert (seen[BRUSSELS]);
  310.             assert (seen[FRANKFURT]);
  311.  
  312.             free (edges);
  313.         } while (0);
  314.  
  315.         do {
  316.             puts ("Checking Ionian Sea rail connections");
  317.             int size, *edges = connectedLocations (gv, &size,
  318.                 IONIAN_SEA, PLAYER_LORD_GODALMING, 0,
  319.                 false, true, false);
  320.  
  321.             assert (size == 1);
  322.             assert (edges[0] == IONIAN_SEA);
  323.  
  324.             free (edges);
  325.         } while (0);
  326.  
  327.         do {
  328.             puts ("Checking Madrid sea connections");
  329.             int size, *edges = connectedLocations (gv, &size,
  330.                 MADRID, PLAYER_LORD_GODALMING, 0,
  331.                 false, false, true);
  332.  
  333.             assert (size == 1);
  334.             assert (edges[0] == MADRID);
  335.  
  336.             free (edges);
  337.         } while (0);
  338.  
  339.         do {
  340.             puts ("Checking Cagliari sea connections");
  341.             int size, *edges = connectedLocations (gv, &size,
  342.                 CAGLIARI, PLAYER_LORD_GODALMING, 0,
  343.                 false, false, true);
  344.             assert (size == 3);
  345.             assert (edges[0] == CAGLIARI);
  346.  
  347.             free (edges);
  348.         } while (0);
  349.  
  350.         puts ("passed");
  351.         disposeGameView (gv);
  352.     } while (0);
  353.  
  354.     return EXIT_SUCCESS;
  355. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement