diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java new file mode 100644 index 0000000000..54e2c35d22 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java @@ -0,0 +1,31 @@ +package com.baeldung.accessmodifiers.publicmodifier; + +import java.util.AbstractList; + +public class ListOfThree extends AbstractList { + + private static final int MAX_LENGTH = 3; + private int size; + private Object[] elements = new Object[MAX_LENGTH]; + + @Override + @SuppressWarnings("unchecked") + public E get(int index) { + return (E)elements[index]; + } + + @Override + public boolean add(E e) { + + elements[size] = e; + size++; + + return true; + } + + @Override + public int size() { + return size; + } + +} diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/Student.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java similarity index 71% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/Student.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java index 8fc6da80fa..50784c6e54 100644 --- a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/Student.java +++ b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java @@ -1,4 +1,4 @@ -package com.baeldung.accessmodifiers; +package com.baeldung.accessmodifiers.publicmodifier; import java.math.BigDecimal; import java.sql.Connection; @@ -7,12 +7,16 @@ import java.sql.SQLException; public class Student { - private BigDecimal grades; //new representation + private BigDecimal grade; //new representation private String name; private int age; - public int getGrades() { - return grades.intValue(); //Backward compatibility + public int getGrade() { + return grade.intValue(); //Backward compatibility + } + + public BigDecimal bigDecimalGrade() { + return grade; } public Connection getConnection() throws SQLException { @@ -21,10 +25,6 @@ public class Student { return DriverManager.getConnection(URL, "sa", ""); } - - public BigDecimal bigDecimalGrades() { - return grades; - } public void setAge(int age) { if (age < 0 || age > 150) diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java index 02cd816515..06f20c8610 100644 --- a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java @@ -3,34 +3,76 @@ package com.baeldung.accessmodifiers; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance.Lifecycle; +import com.baeldung.accessmodifiers.publicmodifier.ListOfThree; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import java.math.BigDecimal; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; +import java.util.List; @TestInstance(Lifecycle.PER_CLASS) public class PublicAccessModifierUnitTest { @Test - public void whenUsingIntValue_valuesAreEqual() { - - assertEquals(0, new BigDecimal(0).intValue()); + public void whenUsingBigDecimalIntValueMethod_correspondingIntIsReturned() { + assertEquals(0, new BigDecimal(0).intValue()); //instance member } - + @Test - public void whenUsingToLowerCase_valuesAreEqual() { - + public void whenUsingIntegerMaxValueField_maxPossibleIntValueIsReturned() { + assertEquals(2147483647, Integer.MAX_VALUE); //static field + } + + @Test + public void whenUsingStringToLowerCase_stringTurnsToLowerCase() { assertEquals("alex", "ALEX".toLowerCase()); } + @Test + public void whenParsingStringOne_parseIntReturns1() { + assertEquals(1, Integer.parseInt("1")); + } + @Test public void whenConnectingToH2_connectionInstanceIsReturned() throws SQLException { - final String URL = "jdbc:h2:~/test"; - Connection conn = DriverManager.getConnection(URL, "sa", ""); + final String url = "jdbc:h2:~/test"; + Connection conn = DriverManager.getConnection(url, "sa", ""); assertNotNull(conn); } + @Test + public void whenCreatingCustomList_concreteAndInheritedMethodsWork() { + + List list1 = new ListOfThree(); + list1.add("zero"); //inherited implementation + list1.add("one"); + list1.add("two"); + + //our implemented methods + assertEquals("zero", list1.get(0)); + + assertThrows(ArrayIndexOutOfBoundsException.class, () -> { + list1.get(4); + }); + + assertThrows(ArrayIndexOutOfBoundsException.class, () -> { + list1.add("three"); + }); + + assertEquals(3, list1.size()); + + list1.indexOf("one"); //inherited implementation + + List list2 = new ListOfThree(); + list2.add("zero"); + list2.add("one"); + + assertTrue(list1.containsAll(list2)); //inherited implementation + } + }