diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..5ff6309b7199129c1afe4f4ec1906e640bec48c6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..13566b81b018ad684f3a35fee301741b2734c8f4 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000000000000000000000000000000000000..aa00ffab7828f4818589659c804ec2cfd99baed3 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="Encoding"> + <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" /> + <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" /> + </component> +</project> \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000000000000000000000000000000000000..82dbec8ad28463aed32007a93ffc07865ae98968 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ExternalStorageConfigurationManager" enabled="true" /> + <component name="MavenProjectsManager"> + <option name="originalFiles"> + <list> + <option value="$PROJECT_DIR$/pom.xml" /> + </list> + </option> + </component> + <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK"> + <output url="file://$PROJECT_DIR$/out" /> + </component> +</project> \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..7a633f8131a1c91c133b2bfdec811efdfb240dbf --- /dev/null +++ b/pom.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>fi.utu.alkall</groupId> + <artifactId>Olio</artifactId> + <version>1.0-SNAPSHOT</version> + + <properties> + <maven.compiler.source>17</maven.compiler.source> + <maven.compiler.target>17</maven.compiler.target> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </properties> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>RELEASE</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter</artifactId> + <version>RELEASE</version> + <scope>test</scope> + </dependency> + </dependencies> + + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-api</artifactId> + <version>5.10.2</version> + <scope>test</scope> + </dependency> + +</project> \ No newline at end of file diff --git a/src/main/java/fi/utu/alkall/Main.java b/src/main/java/fi/utu/alkall/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..d5219e360928aac88a69b35588cc73b56dc004b6 --- /dev/null +++ b/src/main/java/fi/utu/alkall/Main.java @@ -0,0 +1,17 @@ +package fi.utu.alkall; + +//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or +// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter. +public class Main { + public static void main(String[] args) { + //TIP Press <shortcut actionId="ShowIntentionActions"/> with your caret at the highlighted text + // to see how IntelliJ IDEA suggests fixing it. + System.out.printf("Hello and welcome!"); + + for (int i = 1; i <= 5; i++) { + //TIP Press <shortcut actionId="Debug"/> to start debugging your code. We have set one <icon src="AllIcons.Debugger.Db_set_breakpoint"/> breakpoint + // for you, but you can always add more by pressing <shortcut actionId="ToggleLineBreakpoint"/>. + System.out.println("i = " + i); + } + } +} \ No newline at end of file diff --git a/src/main/java/fi/utu/alkall/kirjahylly/Kirjahylly.java b/src/main/java/fi/utu/alkall/kirjahylly/Kirjahylly.java new file mode 100644 index 0000000000000000000000000000000000000000..8f09fc85edb21528202dc29bedb9a46ba0f029bf --- /dev/null +++ b/src/main/java/fi/utu/alkall/kirjahylly/Kirjahylly.java @@ -0,0 +1,63 @@ +package fi.utu.alkall.kirjahylly; + +import java.util.ArrayList; + +/** + * Luokka mallintaa yksinkertaista kirjahyllyä + */ + +public class Kirjahylly { + private ArrayList<String> kirjat; + + private int kirjojaHyllyssa = 0; + + public Kirjahylly() { + kirjat = new ArrayList<>(); + kirjojaHyllyssa = 0; + } + + + /** + * Lisää yhden kirjan hyllyyn + * @param kirja lisättävä kirja + */ + public void lisaaKirja(String kirja) { + kirjat.add(kirja); + } + + /** + * Palauttaa kirjahyllyyn viimeksi lisätyn kirjan + * @return viimeksi lisätyn kirjan + */ + public String viimeksiLisatty() { + return kirjat.get(0); + } + + /** + * Palauttaa tiedon siitä onko annettu kirja hyllyssä + * @param kirja kirja, jota etsitään + * @return <code>true</code>, jos kirjan on hyllyssä, muuten <code>false</code> + */ + public boolean onkoKirjaHyllyssa(String kirja) { + for (String k : kirjat) { + + if (k.equals(kirja)) { + return true; + } + } + + return false; + } + + + /** + * Palautta kirjahyllyssä olevien kirjojen määrän + * @return kirjojen määrän hyllyssä + */ + + + public int getKirjojaHyllyssa() { + return kirjat.size(); + } + +} diff --git a/src/test/java/fi/utu/alkall/kirjahylly/KirjahyllyTest.java b/src/test/java/fi/utu/alkall/kirjahylly/KirjahyllyTest.java new file mode 100644 index 0000000000000000000000000000000000000000..ef5f460186eb9824f2d842ef0d288aa2f24e62c6 --- /dev/null +++ b/src/test/java/fi/utu/alkall/kirjahylly/KirjahyllyTest.java @@ -0,0 +1,44 @@ +package fi.utu.alkall.kirjahylly; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +class KirjahyllyTest { + + private Kirjahylly hylly; + + @BeforeEach + void setUp() { + hylly = new Kirjahylly(); + } + + @Test + void lisaaKirja() { + hylly.lisaaKirja("Testikirja"); + assertEquals(1, hylly.getKirjojaHyllyssa(), "Hyllyssä pitäisi olla yksi kirja lisäyksen jälkeen."); + } + + @Test + void viimeksiLisatty() { + hylly.lisaaKirja("Ensimmäinen kirja"); + hylly.lisaaKirja("Toinen kirja"); + assertEquals("Toinen kirja", hylly.viimeksiLisatty(), "Viimeksi lisätyn kirjan pitäisi olla 'Toinen kirja'."); + } + + @Test + void onkoKirjaHyllyssa() { + hylly.lisaaKirja("Kirja hyllyssä"); + assertTrue(hylly.onkoKirjaHyllyssa("Kirja hyllyssä"), "Kirjan pitäisi löytyä hyllystä."); + assertFalse(hylly.onkoKirjaHyllyssa("Kirja ei hyllyssä"), "Kirjaa ei pitäisi löytyä hyllystä, koska sitä ei ole lisätty."); + } + + @Test + void getKirjojaHyllyssa() { + assertEquals(0, hylly.getKirjojaHyllyssa(), "Alussa hyllyssä ei pitäisi olla kirjoja."); + hylly.lisaaKirja("Uusi Kirja"); + assertEquals(1, hylly.getKirjojaHyllyssa(), "Hyllyssä pitäisi olla yksi kirja lisäyksen jälkeen."); + hylly.lisaaKirja("Toinen Uusi Kirja"); + assertEquals(2, hylly.getKirjojaHyllyssa(), "Hyllyssä pitäisi olla kaksi kirjaa lisäysten jälkeen."); + } +}