From 95793052303ed55aaa19763fd0333ebf94e74027 Mon Sep 17 00:00:00 2001 From: iliask796 Date: Thu, 14 Sep 2023 12:00:37 +0300 Subject: [PATCH 1/4] Additional Classes for Abstraction Demonstration --- .../java/com/booleanuk/core/BankAccount.java | 22 +++++++++++++++++++ .../java/com/booleanuk/core/TrafficLight.java | 20 +++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 src/main/java/com/booleanuk/core/BankAccount.java create mode 100644 src/main/java/com/booleanuk/core/TrafficLight.java diff --git a/src/main/java/com/booleanuk/core/BankAccount.java b/src/main/java/com/booleanuk/core/BankAccount.java new file mode 100644 index 0000000..a9b1552 --- /dev/null +++ b/src/main/java/com/booleanuk/core/BankAccount.java @@ -0,0 +1,22 @@ +package com.booleanuk.core; + +public class BankAccount { + private int balance; + + public BankAccount(double openingBalance) { + this.setBalance(openingBalance); + } + + public void depositAmount(double deposit) { + double newTotal = this.getBalance() + deposit; + this.setBalance(newTotal); + } + + public double getBalance() { + return this.balance/100.0; + } + + private void setBalance(double balance) { + this.balance = (int) (balance * 100); + } +} diff --git a/src/main/java/com/booleanuk/core/TrafficLight.java b/src/main/java/com/booleanuk/core/TrafficLight.java new file mode 100644 index 0000000..26ec0f7 --- /dev/null +++ b/src/main/java/com/booleanuk/core/TrafficLight.java @@ -0,0 +1,20 @@ +package com.booleanuk.core; + +public class TrafficLight { + private String colour; + public TrafficLight() { + this.colour = "green"; + } + + public boolean canGo() { + return this.colour.equals("green"); + } + + public void setGreen() { + this.colour = "green"; + } + + public void setRed() { + this.colour = "red"; + } +} \ No newline at end of file From e917264d075b5a08c57384574b0ae7d0d0b0265f Mon Sep 17 00:00:00 2001 From: iliask796 Date: Thu, 14 Sep 2023 12:00:50 +0300 Subject: [PATCH 2/4] Exercise 1 --- .../java/com/booleanuk/core/TodoItem.java | 32 +++++++++---- .../java/com/booleanuk/core/TodoItemTest.java | 47 +++++++++++++++++++ 2 files changed, 71 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/booleanuk/core/TodoItem.java b/src/main/java/com/booleanuk/core/TodoItem.java index 655d825..4f1fa16 100644 --- a/src/main/java/com/booleanuk/core/TodoItem.java +++ b/src/main/java/com/booleanuk/core/TodoItem.java @@ -1,21 +1,37 @@ package com.booleanuk.core; public class TodoItem { - public String title; - public String detail; - public String status; + private String title; + private String detail; + private boolean status; - public TodoItem(String title, String detail, String status) { + public TodoItem(String title, String detail) { this.title = title; this.detail = detail; - this.status = status; + this.status = false; } - public void setStatus(String status) { - this.status = status; + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getDetail() { + return detail; + } + + public void setDetail(String detail) { + this.detail = detail; + } + + public void setStatus() { + this.status = !this.status; } public String getStatus() { - return this.status; + return this.status?"Done":"Pending"; } } diff --git a/src/test/java/com/booleanuk/core/TodoItemTest.java b/src/test/java/com/booleanuk/core/TodoItemTest.java index 095af82..da4bcc8 100644 --- a/src/test/java/com/booleanuk/core/TodoItemTest.java +++ b/src/test/java/com/booleanuk/core/TodoItemTest.java @@ -4,5 +4,52 @@ import org.junit.jupiter.api.Test; class TodoItemTest { + @Test + public void shouldHaveTitle(){ + TodoItem tdi = new TodoItem("Walk Dog", "Take Ralf out in the afternoon."); + Assertions.assertEquals("Walk Dog", tdi.getTitle()); + } + @Test + public void titleShouldChange(){ + TodoItem tdi = new TodoItem("Walk Dog", "Take Ralf out in the afternoon."); + tdi.setTitle("Walk Family Dog"); + Assertions.assertEquals("Walk Family Dog", tdi.getTitle()); + } + + @Test + public void shouldHaveDetails(){ + TodoItem tdi = new TodoItem("Walk Dog", "Take Ralf out in the afternoon."); + Assertions.assertEquals("Take Ralf out in the afternoon.", tdi.getDetail()); + } + + @Test + public void detailsShouldChange(){ + TodoItem tdi = new TodoItem("Walk Dog", "Take Ralf out in the afternoon."); + tdi.setDetail("Take Ralf out in the evening."); + Assertions.assertEquals("Take Ralf out in the evening.", tdi.getDetail()); + } + + @Test + public void shouldStartAsPending(){ + TodoItem tdi = new TodoItem("Walk Dog", "Take Ralf out in the afternoon."); + Assertions.assertEquals("Pending", tdi.getStatus()); + } + + @Test + public void shouldChangeStatusToDone(){ + TodoItem tdi = new TodoItem("Walk Dog", "Take Ralf out in the afternoon."); + tdi.setStatus(); + Assertions.assertEquals("Done", tdi.getStatus()); + } + + @Test + public void shouldCycleBackToPendingIfActuallyNotDone() { + TodoItem tdi = new TodoItem("Walk Dog", "Take Ralf out in the afternoon."); + Assertions.assertEquals("Pending", tdi.getStatus()); + tdi.setStatus(); + Assertions.assertEquals("Done", tdi.getStatus()); + tdi.setStatus(); + Assertions.assertEquals("Pending", tdi.getStatus()); + } } From 8ba6957be2eab5c429e4aa8a56013666eec98972 Mon Sep 17 00:00:00 2001 From: iliask796 Date: Thu, 14 Sep 2023 12:18:20 +0300 Subject: [PATCH 3/4] Class Model for Exercise 2 Created --- ClassModel.png | Bin 0 -> 15705 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ClassModel.png diff --git a/ClassModel.png b/ClassModel.png new file mode 100644 index 0000000000000000000000000000000000000000..8f90300520660efd23930f296dc1acdafbf64df2 GIT binary patch literal 15705 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 Date: Thu, 14 Sep 2023 12:32:53 +0300 Subject: [PATCH 4/4] Exercise 2 --- .../java/com/booleanuk/core/UserAccount.java | 51 +++++++++++++++++++ .../com/booleanuk/core/UserAccountTest.java | 42 +++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 src/main/java/com/booleanuk/core/UserAccount.java create mode 100644 src/test/java/com/booleanuk/core/UserAccountTest.java diff --git a/src/main/java/com/booleanuk/core/UserAccount.java b/src/main/java/com/booleanuk/core/UserAccount.java new file mode 100644 index 0000000..a8273cf --- /dev/null +++ b/src/main/java/com/booleanuk/core/UserAccount.java @@ -0,0 +1,51 @@ +package com.booleanuk.core; + +public class UserAccount { + private String emailAddress; + private String password; + private boolean isActivated; + + public UserAccount() { + this.isActivated = false; + } + + public String getEmailAddress() { + return emailAddress; + } + + public boolean setEmailAddress(String emailAddress) { + if (emailAddress.contains("@")){ + this.emailAddress = emailAddress; + System.out.println("Email set successfully."); + return true; + } else { + System.out.println("Invalid email address format."); + return false; + } + } + + public String getPassword() { + return password; + } + + public boolean setPassword(String password) { + if (password.length()<8){ + System.out.println("Password should be at least 8 characters long."); + return false; + } else { + this.password = password; + System.out.println("Password set successfully."); + return true; + } + + } + + public boolean getAccountStatus() { + System.out.println(!isActivated?"The account has not been activated yet.":"The account is currently active."); + return isActivated; + } + + public void activateAccount() { + isActivated = true; + } +} diff --git a/src/test/java/com/booleanuk/core/UserAccountTest.java b/src/test/java/com/booleanuk/core/UserAccountTest.java new file mode 100644 index 0000000..5209d30 --- /dev/null +++ b/src/test/java/com/booleanuk/core/UserAccountTest.java @@ -0,0 +1,42 @@ +package com.booleanuk.core; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class UserAccountTest { + @Test + public void newAccountShouldBeDisabled() { + UserAccount acc = new UserAccount(); + Assertions.assertFalse(acc.getAccountStatus()); + } + + @Test + public void accountShouldActivate() { + UserAccount acc = new UserAccount(); + acc.activateAccount(); + Assertions.assertTrue(acc.getAccountStatus()); + } + + @Test + public void shouldHavePasswordCheck() { + UserAccount acc = new UserAccount(); + Assertions.assertFalse(acc.setPassword("abcdef")); + Assertions.assertTrue(acc.setPassword("12345678")); + } + + @Test + public void shouldHaveEmailCheck() { + UserAccount acc = new UserAccount(); + Assertions.assertFalse(acc.setEmailAddress("wrongEmailFormat.com")); + Assertions.assertTrue(acc.setEmailAddress("correctEmail@format.com")); + } + + @Test + public void onSuccessfulCreationShouldGetData() { + UserAccount acc = new UserAccount(); + Assertions.assertTrue(acc.setEmailAddress("correctEmail@format.com")); + Assertions.assertTrue(acc.setPassword("12345678")); + Assertions.assertEquals("correctEmail@format.com", acc.getEmailAddress()); + Assertions.assertEquals("12345678", acc.getPassword()); + } +}