From cca40a543ab40c0de5f0d698944e155f2ff03daa Mon Sep 17 00:00:00 2001 From: JuhoKang Date: Thu, 28 Jan 2016 22:39:50 +0900 Subject: [PATCH] Added Code --- value-object/value-object/pom.xml | 6 ++ .../java/com/iluwatar/value/object/App.java | 13 ++- .../com/iluwatar/value/object/HeroStat.java | 91 +++++++++++++++++++ .../com/iluwatar/value/object/AppTest.java | 38 -------- .../iluwatar/value/object/HeroStatTest.java | 23 +++++ 5 files changed, 126 insertions(+), 45 deletions(-) create mode 100644 value-object/value-object/src/main/java/com/iluwatar/value/object/HeroStat.java delete mode 100644 value-object/value-object/src/test/java/com/iluwatar/value/object/AppTest.java create mode 100644 value-object/value-object/src/test/java/com/iluwatar/value/object/HeroStatTest.java diff --git a/value-object/value-object/pom.xml b/value-object/value-object/pom.xml index f70118bc3..35856e27a 100644 --- a/value-object/value-object/pom.xml +++ b/value-object/value-object/pom.xml @@ -10,6 +10,12 @@ value-object + + com.google.guava + guava-testlib + 19.0 + test + junit junit diff --git a/value-object/value-object/src/main/java/com/iluwatar/value/object/App.java b/value-object/value-object/src/main/java/com/iluwatar/value/object/App.java index ec30d22fc..8c3c56db2 100644 --- a/value-object/value-object/src/main/java/com/iluwatar/value/object/App.java +++ b/value-object/value-object/src/main/java/com/iluwatar/value/object/App.java @@ -1,13 +1,12 @@ package com.iluwatar.value.object; /** - * Hello world! + * Hello world!. * */ -public class App -{ - public static void main( String[] args ) - { - System.out.println( "Hello World!" ); - } +public class App { + public static void main(String[] args) { + HeroStat stat = HeroStat.valueOf(10, 5, 0); + System.out.println(stat.toString()); + } } diff --git a/value-object/value-object/src/main/java/com/iluwatar/value/object/HeroStat.java b/value-object/value-object/src/main/java/com/iluwatar/value/object/HeroStat.java new file mode 100644 index 000000000..b53b5c333 --- /dev/null +++ b/value-object/value-object/src/main/java/com/iluwatar/value/object/HeroStat.java @@ -0,0 +1,91 @@ +package com.iluwatar.value.object; + +/** + * The Discount Coupon only discounts by percentage. + * + */ +public class HeroStat { + + + // stats for a hero + + private final int strength; + private final int intelligence; + private final int luck; + + + // All constructors must be private. + private HeroStat(int strength, int intelligence, int luck) { + super(); + this.strength = strength; + this.intelligence = intelligence; + this.luck = luck; + } + + public static HeroStat valueOf(int strength, int intelligence, int luck) { + return new HeroStat(strength, intelligence, luck); + } + + public int getStrength() { + return strength; + } + + public int getIntelligence() { + return intelligence; + } + + public int getLuck() { + return luck; + } + + /* + * recommended to provide a static factory method capable of creating an instance from the formal + * string representation declared like this. public static Juice parse(String string) {} + */ + + // toString, hashCode, equals + + @Override + public String toString() { + return "HeroStat [strength=" + strength + ", intelligence=" + intelligence + ", luck=" + luck + + "]"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + intelligence; + result = prime * result + luck; + result = prime * result + strength; + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + HeroStat other = (HeroStat) obj; + if (intelligence != other.intelligence) { + return false; + } + if (luck != other.luck) { + return false; + } + if (strength != other.strength) { + return false; + } + return true; + } + + + // the clone() method should not be public + +} diff --git a/value-object/value-object/src/test/java/com/iluwatar/value/object/AppTest.java b/value-object/value-object/src/test/java/com/iluwatar/value/object/AppTest.java deleted file mode 100644 index 4b614462c..000000000 --- a/value-object/value-object/src/test/java/com/iluwatar/value/object/AppTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.iluwatar.value.object; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -/** - * Unit test for simple App. - */ -public class AppTest - extends TestCase -{ - /** - * Create the test case - * - * @param testName name of the test case - */ - public AppTest( String testName ) - { - super( testName ); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() - { - return new TestSuite( AppTest.class ); - } - - /** - * Rigourous Test :-) - */ - public void testApp() - { - assertTrue( true ); - } -} diff --git a/value-object/value-object/src/test/java/com/iluwatar/value/object/HeroStatTest.java b/value-object/value-object/src/test/java/com/iluwatar/value/object/HeroStatTest.java new file mode 100644 index 000000000..a7c07d226 --- /dev/null +++ b/value-object/value-object/src/test/java/com/iluwatar/value/object/HeroStatTest.java @@ -0,0 +1,23 @@ +package com.iluwatar.value.object; + +import com.google.common.testing.EqualsTester; + +import org.junit.Test; + +/** + * Unit test for HeroStat. + */ +public class HeroStatTest { + + /** + * Tester for equals() and hashCode() methods of a class. + * @see http://www.javadoc.io/doc/com.google.guava/guava-testlib/19.0 + */ + @Test + public void testEquals() { + HeroStat heroStatA = HeroStat.valueOf(3, 9, 2); + HeroStat heroStatB = HeroStat.valueOf(3, 9, 2); + new EqualsTester().addEqualityGroup(heroStatA, heroStatB).testEquals(); + } + +}