Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //To download this: press "raw" button -> save as Maman12Test.java -> place in same package with Date and FoodItem classes and run.
- /**
- * Fully automated tests for maman 12 (OUI).
- * This class will test your Date and FoodItem classes and generate a
- * report about methods working properly and failures.
- *
- * -------------------------------------------------------------
- * NOTE: THESE TESTS ARE WRITTEN BY A STUDENT, NOT BY A TEACHER!
- * RELY ON THE RESULTS AT YOUR OWN RISK!
- * OFFICIAL TESTS CAN BE FOUND ON FORUM.
- * --------------------------------------------------------------
- *
- * If you want to update these tests on pastebin.com,
- * send an email to skorn.ilya AT gmail DOT com containing a copy of this file with your changes.
- * Your experience and issues: https://vk.cc/a6dxBo
- *
- * @author Ilya Skornyakov
- * @version 1.2.2
- * Updates: https://pastebin.com/ND8Z7bCm
- */
- public class Maman12Test {
- /**
- * true - display everything, false - display only failed tests and final results
- */
- private static final boolean VERBOSE = true;
- private static int errorsDate = -1;
- private static int errorsFoodItem = -1;
- private static byte tNow = -1;
- public static void main(String[] args) {
- testDate();
- testFoodItem();
- report();
- }
- private static void testDate() {
- tNow = 0;
- vPrintln(
- "\n\n=========================================\n\t\t\tTesting DATE Class\n-----------------------------------------");
- errorsDate = 0;
- vPrintln("\n----= Equals =----");
- Date date = new Date(1, 1, 2000);
- Date date2 = new Date(1, 1, 2000);
- assertTrue(date.equals(date2));
- date2 = new Date(2, 1, 2000);
- assertFalse(date.equals(date2));
- date2 = new Date(1, 2, 2000);
- assertFalse(date.equals(date2));
- date2 = new Date(1, 1, 1999);
- assertFalse(date.equals(date2));
- if (errorsDate > 0) {
- vPrintln("FATAL ERROR: Check Date class equals method. Without this method working properly tests cant be done!");
- vPrintln("Skipping Date tests");
- errorsDate = -2;
- return;
- }
- vPrintln("\n----= Constructor =----");
- date2 = new Date(date);
- assertEquals(date2, date);
- assertEquals(new Date(10, 1, 999), new Date(1, 1, 2000));
- assertEquals(new Date(10, 0, 2000), new Date(1, 1, 2000));
- assertEquals(new Date(10, 13, 2000), new Date(1, 1, 2000));
- assertEquals(new Date(0, 12, 2000), new Date(1, 1, 2000));
- assertEquals(new Date(-6, 13, 2000), new Date(1, 1, 2000));
- assertEquals(new Date(1, -5, 2000), new Date(1, 1, 2000));
- assertEquals(new Date(32, 1, 2000), new Date(1, 1, 2000));
- assertEquals(new Date(29, 2, 2001), new Date(1, 1, 2000));
- assertEquals(new Date(1, 1, 10000), new Date(1, 1, 2000));
- assertEquals(new Date(29, 2, 2000), new Date(29, 2, 2000));
- assertEquals(new Date(10, 1, 1000), new Date(10, 1, 1000));
- assertEquals(new Date(31, 12, 9999), new Date(31, 12, 9999));
- vPrintln("\n----= toString() =----");
- assertEquals(new Date(15, 9, 1999).toString(), "15/09/1999");
- assertEquals(new Date(1, 10, 2000).toString(), "01/10/2000");
- assertEquals(new Date(20, 11, 1982).toString(), "20/11/1982");
- vPrintln("\n----= Tomorrow() =----");
- assertEquals(new Date(1, 1, 2000).tomorrow(), new Date(2, 1, 2000));
- assertEquals(new Date(1, 12, 2000).tomorrow(), new Date(2, 12, 2000));
- assertEquals(new Date(31, 12, 2000).tomorrow(), new Date(1, 1, 2001));
- assertEquals(new Date(15, 12, 2000).tomorrow(), new Date(16, 12, 2000));
- assertEquals(new Date(28, 2, 2001).tomorrow(), new Date(1, 3, 2001));
- assertEquals(new Date(28, 2, 2000).tomorrow(), new Date(29, 2, 2000));
- assertEquals(new Date(29, 2, 2000).tomorrow(), new Date(1, 3, 2000));
- vPrintln("\n----= Difference =----");
- assertEquals(new Date(1, 1, 2000).difference(new Date(1, 1, 2000)), 0);
- assertEquals(new Date(1, 1, 2000).difference(new Date(2, 1, 2000)), 1);
- assertEquals(new Date(31, 12, 2000).difference(new Date(1, 1, 2001)), 1);
- assertEquals(new Date(28, 2, 2000).difference(new Date(29, 2, 2000)), 1);
- assertEquals(new Date(28, 2, 2000).difference(new Date(1, 3, 2000)), 2);
- assertEquals(new Date(28, 2, 2001).difference(new Date(1, 3, 2001)), 1);
- assertEquals(new Date(1, 1, 2001).difference(new Date(1, 1, 2002)), 365);
- assertEquals(new Date(1, 1, 2001).difference(new Date(1, 1, 2003)), 365 * 2);
- assertEquals(new Date(1, 1, 2000).difference(new Date(1, 1, 2003)), 365 * 3 + 1);
- assertEquals(new Date(1, 1, 2003).difference(new Date(1, 1, 1999)), 365 * 4 + 1);
- vPrintln("\n----= Before/After =----");
- assertFalse(new Date(10, 10, 2010).before(new Date(9, 10, 2010)));
- assertTrue(new Date(10, 10, 2010).before(new Date(11, 10, 2010)));
- assertTrue(new Date(10, 10, 2010).after(new Date(9, 10, 2010)));
- assertFalse(new Date(10, 10, 2010).after(new Date(11, 10, 2010)));
- assertFalse(new Date(10, 10, 2010).after(new Date(10, 10, 2010)));
- assertFalse(new Date(10, 10, 2010).before(new Date(10, 10, 2010)));
- assertFalse(new Date(10, 10, 2010).before(new Date(10, 10, 2010)));
- assertTrue(new Date(10, 10, 2010).after(new Date(11, 12, 2009)));
- assertTrue(new Date(10, 10, 2010).after(new Date(11, 9, 2010)));
- assertFalse(new Date(10, 10, 2010).after(new Date(1, 1, 2011)));
- assertTrue(new Date(1, 1, 2000).after(new Date(31, 12, 1999)));
- assertFalse(new Date(1, 1, 2000).before(new Date(31, 12, 1999)));
- vPrintln("\n----= Setters =----");
- date = new Date(1, 1, 2001);
- date.setDay(0);
- assertEquals(date, new Date(1, 1, 2001));
- date = new Date(1, 1, 2000);
- date.setDay(31);
- assertEquals(date, new Date(31, 1, 2000));
- date = new Date(1, 2, 2000);
- date.setDay(29);
- assertEquals(date, new Date(29, 2, 2000));
- date = new Date(1, 2, 2001);
- date.setDay(29);
- assertEquals(date, new Date(1, 2, 2001));
- date = new Date(1, 1, 2001);
- date.setMonth(2);
- date.setMonth(0);
- date.setMonth(13);
- assertEquals(date, new Date(1, 2, 2001));
- date.setYear(2000);
- date.setYear(999);
- date.setYear(10000);
- assertEquals(date, new Date(1, 2, 2000));
- vPrintln("\n----= Day of Week / Combined tests in cycle (silent) =----");
- Date date3_1 = new Date(7, 1, 1989);
- Date date3_2 = new Date(6, 1, 1989);
- Date date3_3 = new Date(8, 1, 1989);
- int dow = 0;
- for (int i = 0; i < 365 * 50; i++) {
- if (date3_1.dayInWeek() != dow) {
- vPrint("Error at date: %s (DOW)\t", date3_1.toString());
- assertEquals(date3_1.dayInWeek(), dow);
- break;
- }
- if (!date3_2.before(date3_1)) {
- vPrint("Error at dates: %s %s (before)\t", date3_2, date3_1);
- assertTrue(date3_2.before(date3_1));
- break;
- }
- if (!date3_3.after(date3_1)) {
- vPrint("Error at dates: %s %s (after)\t", date3_3, date3_1);
- assertTrue(date3_3.after(date3_1));
- break;
- }
- if (date3_3.difference(date3_2) != 2) {
- vPrint("Error at dates: %s %s (difference)\t", date3_3, date3_2);
- assertEquals(date3_3.difference(date3_2), 2);
- break;
- }
- date3_1 = date3_1.tomorrow();
- date3_2 = date3_2.tomorrow();
- date3_3 = date3_3.tomorrow();
- dow = dow == 6 ? 0 : dow + 1;
- }
- tNow = -1;
- }
- private static void testFoodItem() {
- tNow = 1;
- vPrintln(
- "\n\n=========================================\n\t\t\tTesting FoodItem Class\n-----------------------------------------");
- errorsFoodItem = 0;
- vPrintln("\n----= Equals =----");
- Date date = new Date(1, 1, 2000);
- Date date2 = new Date(10, 1, 2000);
- Date date3 = new Date(1, 1, 2000);
- Date date4 = new Date(10, 1, 2000);
- FoodItem fi1 = new FoodItem("Test", 1234, 5, date, date2, 0, 20, 10);
- FoodItem fi2 = new FoodItem("Test", 1234, 5, date3, date4, 0, 20, 10);
- assertTrue(fi1.equals(fi2));
- assertTrue(fi2.equals(fi1));
- Date date5 = new Date(11, 1, 2000);
- FoodItem fi3 = new FoodItem("Test", 1234, 5, date3, date5, 0, 20, 10);
- assertFalse(fi1.equals(fi3));
- assertFalse(fi1.equals(
- new FoodItem("Test", 1235, 5, date, date2, 0, 20, 10)));
- assertFalse(fi1.equals(
- new FoodItem("Test 2", 1234, 5, date, date2, 0, 20, 10)));
- assertTrue(fi1.equals(
- new FoodItem("Test", 1234, 4, date, date2, 0, 20, 10)));
- assertFalse(fi1.equals(
- new FoodItem("Test", 1234, 5, date, date2, 1, 20, 10)));
- assertFalse(fi1.equals(
- new FoodItem("Test", 1234, 5, date, date2, 0, 15, 10)));
- assertFalse(fi1.equals(
- new FoodItem("Test", 1234, 5, date, date2, 0, 20, 20)));
- if (errorsFoodItem > 0) {
- vPrintln("FATAL ERROR: Check FoodItem class equals method. Without this method working properly tests can't be done!");
- vPrintln("Skipping FoodItem tests");
- errorsFoodItem = -2;
- return;
- }
- vPrintln("\n----= Constructor =----");
- FoodItem fi4 = new FoodItem(fi2);
- assertEquals(fi4, fi2);
- assertEquals(new FoodItem("Test", 999, -1, date, date2, 0, 20, -5),
- new FoodItem("Test", 9999, 0, date, date2, 0, 20, 1));
- assertEquals(new FoodItem("", 10000, 0, date, date2, 10, 0, 0),
- new FoodItem("item", 9999, 0, date, date2, 0, 10, 1));
- Date date6 = new Date(10, 1, 2000);
- Date date7 = new Date(9, 1, 2000);
- Date date8 = new Date(11, 1, 2000);
- assertEquals(new FoodItem("Test", 1234, 5, date6, date7, 0, 20, 10),
- new FoodItem("Test", 1234, 5, date6, date8, 0, 20, 10));
- vPrintln("\n----= Setters =----");
- fi4 = new FoodItem("Test", 1234, 5, date, date2, 0, 20, 10);
- fi4.setPrice(0);
- assertEquals(fi4.getPrice(), 10);
- fi4.setPrice(-5);
- assertEquals(fi4.getPrice(), 10);
- fi4.setPrice(5);
- assertEquals(fi4.getPrice(), 5);
- fi4.setQuantity(-1);
- assertEquals(fi4.getQuantity(), 5);
- fi4.setQuantity(6);
- assertEquals(fi4.getQuantity(), 6);
- fi4.setProductionDate(date8);
- assertEquals(fi4.getProductionDate(), date);
- fi4.setExpiryDate(new Date(30, 12, 1999));
- assertEquals(fi4.getExpiryDate(), date2);
- vPrintln("\n----= toString() =----");
- FoodItem fi5 = new FoodItem("milk", 1234, 3, new Date(14, 12, 2019), new Date(21, 12, 2019), 10, 15, 5);
- assertEquals(fi5.toString(), "FoodItem: milk\tCatalogueNumber: 1234\tProductionDate: 14/12/2019\tExpiryDate: 21/12/2019\tQuantity: 3");
- vPrintln("\n----= isFresh() =----");
- assertTrue(fi5.isFresh(new Date(20, 12, 2019)));
- assertTrue(fi5.isFresh(new Date(21, 12, 2019)));
- assertTrue(fi5.isFresh(new Date(14, 12, 2019)));
- assertFalse(fi5.isFresh(new Date(22, 12, 2019)));
- assertFalse(fi5.isFresh(new Date(13, 12, 2019)));
- vPrintln("\n----= isCheaper() =----");
- FoodItem fi6 = new FoodItem("Test", 1234, 5, date, date2, 0, 20, 5);
- assertFalse(fi6.isCheaper(fi5));
- assertFalse(fi5.isCheaper(fi6));
- assertFalse(fi4.isCheaper(fi5));
- assertTrue(fi6.isCheaper(fi2));
- vPrintln("\n----= howManyItems() =----");
- assertEquals(fi6.howManyItems(0), 0);
- assertEquals(fi6.howManyItems(-10), 0);
- assertEquals(fi6.howManyItems(4), 0);
- assertEquals(fi6.howManyItems(5), 1);
- assertEquals(fi6.howManyItems(9), 1);
- assertEquals(fi6.howManyItems(10), 2);
- assertEquals(fi6.howManyItems(24), 4);
- assertEquals(fi6.howManyItems(25), 5);
- assertEquals(fi6.howManyItems(100), 5);
- vPrintln("\n----= olderFoodItem() =----");
- assertTrue(fi6.olderFoodItem(fi5));
- assertFalse(fi5.olderFoodItem(fi6));
- assertFalse(fi5.olderFoodItem(fi5));
- tNow = -1;
- }
- private static void assertEquals(Date d1, Date d2) {
- if (d1.equals(d2))
- vPrint(false, "%s and %s are equal\t-> ok\n", d1, d2);
- else {
- vPrint("*** %s and %s are NOT equal\t-> ERROR ***\n", d1, d2);
- addError();
- }
- }
- private static void assertEquals(FoodItem d1, FoodItem d2) {
- if (d1.equals(d2))
- vPrint(false, "%s and %s are equal\t-> ok\n", d1, d2);
- else {
- vPrint("*** %s and %s are NOT equal\t-> ERROR ***\n", d1, d2);
- addError();
- }
- }
- private static void assertEquals(String a, String b) {
- if (a.equals(b))
- vPrint(false, "%s and %s are equal\t-> ok\n", a, b);
- else {
- vPrint("*** %s and %s are NOT equal\t-> ERROR ***\n", a, b);
- addError();
- }
- }
- private static void assertEquals(int a, int b) {
- if (a == b)
- vPrint(false, "%s and %s are equal\t-> ok\n", a, b);
- else {
- vPrint("*** %s and %s are NOT equal\t-> ERROR ***\n", a, b);
- addError();
- }
- }
- private static void assertTrue(boolean s1) {
- if (s1)
- vPrint(false, "True\t-> ok\n");
- else {
- vPrint("*** FALSE (expected true)\t-> ERROR ***\n");
- addError();
- }
- }
- private static void assertFalse(boolean s1) {
- if (!s1)
- vPrint(false, "False\t-> ok\n");
- else {
- vPrint("*** TRUE (expected false)\t-> ERROR ***\n");
- addError();
- }
- }
- private static void addError() {
- if (tNow == 0) errorsDate++;
- if (tNow == 1) errorsFoodItem++;
- }
- private static void vPrintln(String s) {
- vPrintln(true, s);
- }
- private static void vPrintln(Boolean v, String s) {
- vPrint(v, s + "\n");
- }
- private static void vPrint(String s, Object... o) {
- vPrint(true, s, o);
- }
- private static void vPrint(Boolean v, String s, Object... o) {
- if (v || VERBOSE)
- System.out.printf(s, o);
- }
- private static void report() {
- vPrintln("\n\n=========================================\n\t\t\tTESTS RESULTS\n-----------------------------------------");
- vPrintln("--> DATE CLASS");
- report(errorsDate);
- vPrintln("\n--> FOODITEM CLASS");
- report(errorsFoodItem);
- vPrintln("-----------------------------------------");
- if (errorsDate < 0 || errorsFoodItem < 0)
- vPrint("\tSome classes weren't tested\n");
- else {
- int e = errorsDate + errorsFoodItem;
- if (e > 0)
- vPrint("\t\t\tTotal errors: %d\n", e);
- else
- vPrint("All classes passed tests with no errors\n");
- }
- vPrintln("=========================================");
- vPrintln("What was your experience? Let me know: https://vk.cc/a6dxBo");
- vPrintln("\n~~ Please check your classes with official tester on forum ~~");
- }
- private static void report(int errors) {
- if (errors == -2) {
- vPrintln("Testing failed due to bad equals() method");
- } else if (errors == -1) {
- vPrintln("Tests weren't performed");
- } else {
- if (errors > 0)
- vPrint("✖ Tests revealed %d errors ᕙ(⇀‸↼‶)ᕗ\n", errors);
- else
- vPrintln("✓ Tests are passed with no errors ┐( ̄ヮ ̄)┌");
- }
- }
- }
- /* CHANGELOG
- * 1.2.2 - FoodItem equals test fixed (quantity)
- * 1.2.1 - difference test fixed
- * */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement