00001 /* 00002 * Class CardTest 00003 * 00004 */ 00005 00006 #ifndef CARDTEST_H 00007 #define CARDTEST_H 00008 #include "card.h" 00009 #include "testresult.h" 00010 00011 typedef std::vector<int> intVec; 00012 00013 00014 class GenericTest { 00015 public: 00016 GenericTest(); 00017 bool meetsRequirements(const Card &) const; 00018 virtual TestResult runTest(const Card &) const = 0; 00019 00020 protected: 00021 void addRequiredTrack(const int& i); 00022 intVec requiredTracks; 00023 }; 00024 00025 class VisaTest : public GenericTest { 00026 public: 00027 VisaTest(); 00028 virtual TestResult runTest(const Card&) const; 00029 00030 }; 00031 00032 class ATMTest : public GenericTest { 00033 public: 00034 ATMTest(); 00035 virtual TestResult runTest(const Card&) const; 00036 00037 }; 00038 00039 class BoardPassTest : public GenericTest { 00040 public: 00041 BoardPassTest(); 00042 virtual TestResult runTest(const Card&) const; 00043 00044 }; 00045 00046 class PlaneTicketTest : public GenericTest { 00047 public: 00048 PlaneTicketTest(); 00049 virtual TestResult runTest(const Card&) const; 00050 00051 }; 00052 00053 class BuzzcardOldTest : public GenericTest { 00054 public: 00055 BuzzcardOldTest(); 00056 virtual TestResult runTest(const Card&) const; 00057 00058 }; 00059 00060 class BuzzcardNewTest : public GenericTest { 00061 public: 00062 BuzzcardNewTest(); 00063 virtual TestResult runTest(const Card&) const; 00064 00065 }; 00066 00067 class MastercardTest : public GenericTest { 00068 public: 00069 MastercardTest(); 00070 virtual TestResult runTest(const Card&) const; 00071 00072 }; 00073 00074 class NinetyNineXTest : public GenericTest { 00075 public: 00076 NinetyNineXTest(); 00077 virtual TestResult runTest(const Card&) const; 00078 00079 }; 00080 00081 class BarnesNobleGCTest : public GenericTest { 00082 public: 00083 BarnesNobleGCTest(); 00084 virtual TestResult runTest(const Card&) const; 00085 00086 }; 00087 00088 class KrogerTest : public GenericTest { 00089 public: 00090 KrogerTest(); 00091 virtual TestResult runTest(const Card&) const; 00092 00093 }; 00094 00095 class GapGCTest : public GenericTest { 00096 public: 00097 GapGCTest(); 00098 virtual TestResult runTest(const Card&) const; 00099 00100 }; 00101 00102 class DeltaSkyMilesTest : public GenericTest { 00103 public: 00104 DeltaSkyMilesTest(); 00105 virtual TestResult runTest(const Card&) const; 00106 00107 }; 00108 00109 class RoyalCaribbeanSuiteTest : public GenericTest { 00110 public: 00111 RoyalCaribbeanSuiteTest(); 00112 virtual TestResult runTest(const Card&) const; 00113 00114 }; 00115 00116 class OldNavyGCTest : public GenericTest { 00117 public: 00118 OldNavyGCTest(); 00119 virtual TestResult runTest(const Card&) const; 00120 00121 }; 00122 00123 class BestBuyGCTest : public GenericTest { 00124 public: 00125 BestBuyGCTest(); 00126 virtual TestResult runTest(const Card&) const; 00127 00128 }; 00129 00130 00131 class ATTPhoneTest : public GenericTest { 00132 public: 00133 ATTPhoneTest(); 00134 virtual TestResult runTest(const Card&) const; 00135 00136 }; 00137 00138 00139 class AAMVATest : public GenericTest { 00140 public: 00141 AAMVATest(); 00142 virtual TestResult runTest(const Card&) const; 00143 00144 }; 00145 00146 00147 #endif