From d55953b08b922780e80e403fcda9a0e82404baf7 Mon Sep 17 00:00:00 2001 From: evgenykuzin <32079738+evgenykuzin@users.noreply.github.com> Date: Tue, 27 Feb 2018 16:02:34 +0300 Subject: [PATCH 01/13] 2 methods --- src/main/java/ru/spbstu/kspt/task1/Trie.java | 57 +++++++++++++++++++ .../java/ru/spbstu/kspt/task1/MainTest.java | 3 + .../java/ru/spbstu/kspt/task1/TrieTest.java | 20 +++++++ 3 files changed, 80 insertions(+) create mode 100644 src/main/java/ru/spbstu/kspt/task1/Trie.java create mode 100644 src/test/java/ru/spbstu/kspt/task1/TrieTest.java diff --git a/src/main/java/ru/spbstu/kspt/task1/Trie.java b/src/main/java/ru/spbstu/kspt/task1/Trie.java new file mode 100644 index 0000000..5d99ea5 --- /dev/null +++ b/src/main/java/ru/spbstu/kspt/task1/Trie.java @@ -0,0 +1,57 @@ +package ru.spbstu.kspt.task1; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import java.util.Map; +import java.util.TreeMap; + +public class Trie { + private static final Logger logger = LogManager.getLogger(Main.class); + + static class TrieNode { + Map children = new TreeMap<>(); + boolean leaf; + } + + TrieNode root = new TrieNode(); + + public void put(String s) { + TrieNode v = root; + System.out.println("s"); + System.out.println(s); + for (char ch : s.toLowerCase().toCharArray()) { + System.out.println("ch"); + System.out.println(ch); + System.out.println("vhildren"); + System.out.println(v.children); + if (!v.children.containsKey(ch)) { + v.children.put(ch, new TrieNode()); + System.out.println("ch"); + System.out.println(ch); + System.out.println("vchildren"); + System.out.println(v.children); + + } + v = v.children.get(ch); + } + v.leaf = true; + } + + public boolean find(String s) { + TrieNode v = root; + for (char ch : s.toLowerCase().toCharArray()) { + System.out.println("ch"); + System.out.println(ch); + if (!v.children.containsKey(ch)) { + System.out.println("vchildren"); + System.out.println(v.children); + return false; + } else { + v = v.children.get(ch); + System.out.println("values"); + System.out.println(v.children.values()); + } + } + return true; + } +} diff --git a/src/test/java/ru/spbstu/kspt/task1/MainTest.java b/src/test/java/ru/spbstu/kspt/task1/MainTest.java index 21d5f4a..cbc3b36 100644 --- a/src/test/java/ru/spbstu/kspt/task1/MainTest.java +++ b/src/test/java/ru/spbstu/kspt/task1/MainTest.java @@ -3,6 +3,9 @@ import org.junit.jupiter.api.Test; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; + +import javax.xml.crypto.Data; + import static org.junit.jupiter.api.Assertions.*; class MainTest { diff --git a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java new file mode 100644 index 0000000..2aad58f --- /dev/null +++ b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java @@ -0,0 +1,20 @@ +package ru.spbstu.kspt.task1; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class TrieTest { + private static final Logger logger = LogManager.getLogger(MainTest.class); + + @Test + void exampleTest() { + logger.info("Test started"); + Trie testTrie = new Trie(); + testTrie.put("word"); + assertEquals(true, testTrie.find("word")); + logger.info("Test finished"); + } +} From c2dbb0921629baafff1a0d8d4baf5f1c2ac3bb63 Mon Sep 17 00:00:00 2001 From: evgenykuzin <32079738+evgenykuzin@users.noreply.github.com> Date: Fri, 2 Mar 2018 14:33:25 +0300 Subject: [PATCH 02/13] . --- src/main/java/ru/spbstu/kspt/task1/Trie.java | 34 +++++++++---------- .../java/ru/spbstu/kspt/task1/TrieTest.java | 8 ++++- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/main/java/ru/spbstu/kspt/task1/Trie.java b/src/main/java/ru/spbstu/kspt/task1/Trie.java index 5d99ea5..627b350 100644 --- a/src/main/java/ru/spbstu/kspt/task1/Trie.java +++ b/src/main/java/ru/spbstu/kspt/task1/Trie.java @@ -15,43 +15,41 @@ static class TrieNode { TrieNode root = new TrieNode(); - public void put(String s) { + + public void insert(String s) { TrieNode v = root; - System.out.println("s"); - System.out.println(s); for (char ch : s.toLowerCase().toCharArray()) { - System.out.println("ch"); - System.out.println(ch); - System.out.println("vhildren"); - System.out.println(v.children); if (!v.children.containsKey(ch)) { v.children.put(ch, new TrieNode()); - System.out.println("ch"); - System.out.println(ch); - System.out.println("vchildren"); - System.out.println(v.children); - } v = v.children.get(ch); } v.leaf = true; } + public boolean find(String s) { TrieNode v = root; for (char ch : s.toLowerCase().toCharArray()) { - System.out.println("ch"); - System.out.println(ch); if (!v.children.containsKey(ch)) { - System.out.println("vchildren"); - System.out.println(v.children); return false; } else { v = v.children.get(ch); - System.out.println("values"); - System.out.println(v.children.values()); } } return true; } + + + public void delete(String s) { + TrieNode v = root; + Trie trie = new Trie(); + if (trie.find(s)) { + for (char ch : s.toLowerCase().toCharArray()) { + v.children.remove(ch); + v = v.children.get(ch); + } + v.leaf = false; + } + } } diff --git a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java index 2aad58f..e879d0c 100644 --- a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java +++ b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java @@ -13,8 +13,14 @@ public class TrieTest { void exampleTest() { logger.info("Test started"); Trie testTrie = new Trie(); - testTrie.put("word"); + testTrie.insert("word"); assertEquals(true, testTrie.find("word")); + testTrie.insert("world"); + assertEquals(true, testTrie.find("world")); + assertEquals(true, testTrie.find("wor")); + assertEquals(false, testTrie.find("hello")); + testTrie.delete("word"); + assertEquals(false, testTrie.find("word")); logger.info("Test finished"); } } From 80ec4eb0f24ae7d12eda7e6c91c5bc1c9d763455 Mon Sep 17 00:00:00 2001 From: evgenykuzin <32079738+evgenykuzin@users.noreply.github.com> Date: Fri, 2 Mar 2018 16:48:23 +0300 Subject: [PATCH 03/13] . --- src/main/java/ru/spbstu/kspt/task1/Trie.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/spbstu/kspt/task1/Trie.java b/src/main/java/ru/spbstu/kspt/task1/Trie.java index 627b350..95ba9fe 100644 --- a/src/main/java/ru/spbstu/kspt/task1/Trie.java +++ b/src/main/java/ru/spbstu/kspt/task1/Trie.java @@ -18,11 +18,16 @@ static class TrieNode { public void insert(String s) { TrieNode v = root; + for (char ch : s.toLowerCase().toCharArray()) { if (!v.children.containsKey(ch)) { v.children.put(ch, new TrieNode()); } + System.out.println(v); v = v.children.get(ch); + System.out.println(ch); + System.out.println(v); + System.out.println("."); } v.leaf = true; } @@ -43,11 +48,13 @@ public boolean find(String s) { public void delete(String s) { TrieNode v = root; + Trie trie = new Trie(); if (trie.find(s)) { for (char ch : s.toLowerCase().toCharArray()) { - v.children.remove(ch); + v = v.children.remove(ch); v = v.children.get(ch); + } v.leaf = false; } From 6797c89438959e112f68f138b382be8de7e46a3d Mon Sep 17 00:00:00 2001 From: evgenykuzin <32079738+evgenykuzin@users.noreply.github.com> Date: Fri, 2 Mar 2018 16:49:40 +0300 Subject: [PATCH 04/13] . --- src/main/java/ru/spbstu/kspt/task1/Trie.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/ru/spbstu/kspt/task1/Trie.java b/src/main/java/ru/spbstu/kspt/task1/Trie.java index 95ba9fe..6abb311 100644 --- a/src/main/java/ru/spbstu/kspt/task1/Trie.java +++ b/src/main/java/ru/spbstu/kspt/task1/Trie.java @@ -53,10 +53,7 @@ public void delete(String s) { if (trie.find(s)) { for (char ch : s.toLowerCase().toCharArray()) { v = v.children.remove(ch); - v = v.children.get(ch); - } - v.leaf = false; } } } From 5ceba457b6a2d87cc9860bba51803703c3f9004c Mon Sep 17 00:00:00 2001 From: evgenykuzin <32079738+evgenykuzin@users.noreply.github.com> Date: Fri, 2 Mar 2018 17:17:22 +0300 Subject: [PATCH 05/13] 2.5 methods --- src/main/java/ru/spbstu/kspt/task1/Trie.java | 26 ++++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/java/ru/spbstu/kspt/task1/Trie.java b/src/main/java/ru/spbstu/kspt/task1/Trie.java index 6abb311..fe9ee15 100644 --- a/src/main/java/ru/spbstu/kspt/task1/Trie.java +++ b/src/main/java/ru/spbstu/kspt/task1/Trie.java @@ -16,26 +16,22 @@ static class TrieNode { TrieNode root = new TrieNode(); - public void insert(String s) { + public void insert(String str) { TrieNode v = root; - for (char ch : s.toLowerCase().toCharArray()) { + for (char ch : str.toLowerCase().toCharArray()) { if (!v.children.containsKey(ch)) { v.children.put(ch, new TrieNode()); } - System.out.println(v); v = v.children.get(ch); - System.out.println(ch); - System.out.println(v); - System.out.println("."); } v.leaf = true; } - public boolean find(String s) { + public boolean find(String str) { TrieNode v = root; - for (char ch : s.toLowerCase().toCharArray()) { + for (char ch : str.toLowerCase().toCharArray()) { if (!v.children.containsKey(ch)) { return false; } else { @@ -46,14 +42,18 @@ public boolean find(String s) { } - public void delete(String s) { + public void delete(String str) { TrieNode v = root; - Trie trie = new Trie(); - if (trie.find(s)) { - for (char ch : s.toLowerCase().toCharArray()) { - v = v.children.remove(ch); + if (trie.find(str)) { + for (char ch : str.toLowerCase().toCharArray()) { + if (v.children.containsKey(ch)) { + v.children.remove(ch); + } + v = v.children.get(ch); } } } + + } From c4f550bc4d7347183e5858fdbcb87b21dccb402b Mon Sep 17 00:00:00 2001 From: evgenykuzin <32079738+evgenykuzin@users.noreply.github.com> Date: Mon, 5 Mar 2018 04:02:50 +0300 Subject: [PATCH 06/13] =?UTF-8?q?=D0=BD=D0=B5=20=D0=BC=D0=BE=D0=B3=D1=83?= =?UTF-8?q?=20=D0=B4=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0=D1=82=D1=8C=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=81=D0=BB=D0=B5=D0=B4=D0=BD=D0=B8=D0=B9=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D0=BE=D0=B4(?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ru/spbstu/kspt/task1/Trie.java | 27 ++++++++++++++----- .../java/ru/spbstu/kspt/task1/TrieTest.java | 10 +++++-- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/src/main/java/ru/spbstu/kspt/task1/Trie.java b/src/main/java/ru/spbstu/kspt/task1/Trie.java index fe9ee15..9376c3d 100644 --- a/src/main/java/ru/spbstu/kspt/task1/Trie.java +++ b/src/main/java/ru/spbstu/kspt/task1/Trie.java @@ -22,10 +22,14 @@ public void insert(String str) { for (char ch : str.toLowerCase().toCharArray()) { if (!v.children.containsKey(ch)) { v.children.put(ch, new TrieNode()); + System.out.println("i"); + System.out.println(v.children.keySet()); } v = v.children.get(ch); + } v.leaf = true; + } @@ -45,14 +49,25 @@ public boolean find(String str) { public void delete(String str) { TrieNode v = root; Trie trie = new Trie(); - if (trie.find(str)) { - for (char ch : str.toLowerCase().toCharArray()) { - if (v.children.containsKey(ch)) { - v.children.remove(ch); - } - v = v.children.get(ch); + boolean broExist = false; + String str2 = str; + for (char ch : str.substring(1).toLowerCase().toCharArray()) { + if ( v.children.keySet().size() > 1) { + System.out.println(v.children.keySet().size()); + broExist = true; + str2 = str.substring(str.indexOf(ch)); + System.out.println(str2); } } + + for (char ch : str2.toLowerCase().toCharArray()) { + v.children.remove(ch); + System.out.println("d"); + System.out.println(v.children.keySet()); + + + } + } diff --git a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java index e879d0c..7d5b295 100644 --- a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java +++ b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java @@ -13,14 +13,20 @@ public class TrieTest { void exampleTest() { logger.info("Test started"); Trie testTrie = new Trie(); + assertEquals(false, testTrie.find("word")); testTrie.insert("word"); assertEquals(true, testTrie.find("word")); - testTrie.insert("world"); - assertEquals(true, testTrie.find("world")); + testTrie.insert("worry"); + assertEquals(true, testTrie.find("worry")); assertEquals(true, testTrie.find("wor")); assertEquals(false, testTrie.find("hello")); + testTrie.insert("kotlin"); + assertEquals(true, testTrie.find("kotlin")); + testTrie.delete("kotlin"); + assertEquals(false, testTrie.find("kotlin")); testTrie.delete("word"); assertEquals(false, testTrie.find("word")); + assertEquals(true, testTrie.find("worry")); logger.info("Test finished"); } } From e018db2891495cb8beb67fbb76c294479a95e2e9 Mon Sep 17 00:00:00 2001 From: evgenykuzin <32079738+evgenykuzin@users.noreply.github.com> Date: Sat, 10 Mar 2018 14:20:20 +0300 Subject: [PATCH 07/13] =?UTF-8?q?=D1=81=D0=BA=D0=BE=D1=80=D0=B5=D0=B5=20?= =?UTF-8?q?=D0=B2=D1=81=D0=B5=D0=B3=D0=BE=20=D0=BD=D0=B5=20=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D0=BD=D0=BE,=20=D0=BD=D0=BE=20=D1=82=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D1=8B=20=D0=BF=D1=80=D0=BE=D1=85=D0=BE=D0=B4=D0=B8=D1=82...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ru/spbstu/kspt/task1/Trie.java | 73 +++++++++++++------ .../java/ru/spbstu/kspt/task1/TrieTest.java | 35 +++++++-- 2 files changed, 79 insertions(+), 29 deletions(-) diff --git a/src/main/java/ru/spbstu/kspt/task1/Trie.java b/src/main/java/ru/spbstu/kspt/task1/Trie.java index 9376c3d..dc3d5a9 100644 --- a/src/main/java/ru/spbstu/kspt/task1/Trie.java +++ b/src/main/java/ru/spbstu/kspt/task1/Trie.java @@ -2,8 +2,8 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import java.util.Map; -import java.util.TreeMap; + +import java.util.*; public class Trie { private static final Logger logger = LogManager.getLogger(Main.class); @@ -14,60 +14,87 @@ static class TrieNode { } TrieNode root = new TrieNode(); - + List existedChars = new ArrayList(); public void insert(String str) { + int i = 0; TrieNode v = root; - + boolean bro = false; for (char ch : str.toLowerCase().toCharArray()) { - if (!v.children.containsKey(ch)) { + i++; + if (!v.children.containsKey(ch)){ v.children.put(ch, new TrieNode()); - System.out.println("i"); - System.out.println(v.children.keySet()); + } + else { + if (!existedChars.contains(ch)) { + existedChars.add(ch); + } } v = v.children.get(ch); } v.leaf = true; - + System.out.println(existedChars); } public boolean find(String str) { TrieNode v = root; for (char ch : str.toLowerCase().toCharArray()) { - if (!v.children.containsKey(ch)) { + if (!v.children.keySet().contains(ch)) { return false; } else { v = v.children.get(ch); } } - return true; + + return true; + + } + + public boolean broExist(String str) { + TrieNode v = root; + boolean result = false; + for (char ch : str.toLowerCase().toCharArray()) { + if ( v.children.keySet().size() > 1 && v != root) { + result = true; + } + if (v.children.get(ch) != null) { + v = v.children.get(ch); + } + } + return result; } public void delete(String str) { - TrieNode v = root; Trie trie = new Trie(); + + TrieNode v = root; boolean broExist = false; String str2 = str; - for (char ch : str.substring(1).toLowerCase().toCharArray()) { - if ( v.children.keySet().size() > 1) { - System.out.println(v.children.keySet().size()); - broExist = true; - str2 = str.substring(str.indexOf(ch)); - System.out.println(str2); - } - } + System.out.println(str2); + for (char ch : str.toLowerCase().toCharArray()) { + if ( v != root && !existedChars.contains(ch) ) { + System.out.println(v.children.keySet()); + //v.children.remove(ch); + v.children.put('@', v.children.remove(ch)); + v = v.children.get('@'); + System.out.println(v.children.keySet()); - for (char ch : str2.toLowerCase().toCharArray()) { - v.children.remove(ch); - System.out.println("d"); - System.out.println(v.children.keySet()); + } + else { + if (v.children.get(ch) != null) { + System.out.println("else"); + v = v.children.get(ch); + v.leaf = false; + } + } } + } diff --git a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java index 7d5b295..4258c6c 100644 --- a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java +++ b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java @@ -13,20 +13,43 @@ public class TrieTest { void exampleTest() { logger.info("Test started"); Trie testTrie = new Trie(); - assertEquals(false, testTrie.find("word")); + testTrie.insert("wolk"); + testTrie.insert("kotAssFirst"); + testTrie.insert("russian"); + testTrie.insert("walt"); + testTrie.insert("roll"); + testTrie.insert("rrrrock"); testTrie.insert("word"); + testTrie.insert("world"); assertEquals(true, testTrie.find("word")); - testTrie.insert("worry"); - assertEquals(true, testTrie.find("worry")); + testTrie.insert("worty"); + assertEquals(true, testTrie.find("worty")); assertEquals(true, testTrie.find("wor")); assertEquals(false, testTrie.find("hello")); testTrie.insert("kotlin"); assertEquals(true, testTrie.find("kotlin")); + testTrie.insert("rrrrrrrrrr"); + assertEquals(true, testTrie.find("rrrrrrrrrr")); + testTrie.delete("world"); + assertEquals(false, testTrie.find("world")); + testTrie.delete("rrrrock"); + assertEquals(false, testTrie.find("rrrrock")); + testTrie.delete("russian"); + assertEquals(false, testTrie.find("russian")); + testTrie.delete("kotAssFirst"); + assertEquals(false, testTrie.find("kotAssFirst")); + testTrie.delete("roll"); + assertEquals(false, testTrie.find("roll")); + testTrie.delete("walt"); + assertEquals(false, testTrie.find("walt")); + testTrie.delete("worty"); + assertEquals(false, testTrie.find("worty")); + assertEquals(true, testTrie.find("wort")); + assertEquals(true, testTrie.find("word")); testTrie.delete("kotlin"); assertEquals(false, testTrie.find("kotlin")); - testTrie.delete("word"); - assertEquals(false, testTrie.find("word")); - assertEquals(true, testTrie.find("worry")); + + logger.info("Test finished"); } } From e3bfcfbf4e2d518ea522bdbe4239f8b699627363 Mon Sep 17 00:00:00 2001 From: evgenykuzin <32079738+evgenykuzin@users.noreply.github.com> Date: Mon, 12 Mar 2018 20:35:38 +0300 Subject: [PATCH 08/13] =?UTF-8?q?=D0=BC=D0=BD=D0=B5=20=D0=BA=D0=B0=D0=B6?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=8F=20=D1=81=D0=B5=D0=B9=D1=87=D0=B0=D1=81?= =?UTF-8?q?=20=D0=B2=D1=81=D0=B5=20=D0=B8=D0=B4=D0=B5=D0=B0=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D0=BE.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ru/spbstu/kspt/task1/Trie.java | 86 ++++++++----------- .../java/ru/spbstu/kspt/task1/TrieTest.java | 5 +- 2 files changed, 37 insertions(+), 54 deletions(-) diff --git a/src/main/java/ru/spbstu/kspt/task1/Trie.java b/src/main/java/ru/spbstu/kspt/task1/Trie.java index dc3d5a9..b17336f 100644 --- a/src/main/java/ru/spbstu/kspt/task1/Trie.java +++ b/src/main/java/ru/spbstu/kspt/task1/Trie.java @@ -11,90 +11,72 @@ public class Trie { static class TrieNode { Map children = new TreeMap<>(); boolean leaf; + boolean turned; } TrieNode root = new TrieNode(); - List existedChars = new ArrayList(); + public void insert(String str) { - int i = 0; - TrieNode v = root; - boolean bro = false; + TrieNode node = root; + for (char ch : str.toLowerCase().toCharArray()) { - i++; - if (!v.children.containsKey(ch)){ - v.children.put(ch, new TrieNode()); - } - else { - if (!existedChars.contains(ch)) { - existedChars.add(ch); + + if (!node.children.containsKey(ch)) { + node.children.put(ch, new TrieNode()); + if (node != root) { + node.children.get(ch).turned = true; } - } - v = v.children.get(ch); + } else { + if (node.turned) { + node.turned = false; + } + + } + node = node.children.get(ch); } - v.leaf = true; - System.out.println(existedChars); + + node.leaf = true; } public boolean find(String str) { - TrieNode v = root; + TrieNode node = root; + for (char ch : str.toLowerCase().toCharArray()) { - if (!v.children.keySet().contains(ch)) { + + if (!node.children.keySet().contains(ch)) { return false; } else { - v = v.children.get(ch); + node = node.children.get(ch); } + } + if (node.leaf) { return true; - - } - - public boolean broExist(String str) { - TrieNode v = root; - boolean result = false; - for (char ch : str.toLowerCase().toCharArray()) { - if ( v.children.keySet().size() > 1 && v != root) { - result = true; - } - if (v.children.get(ch) != null) { - v = v.children.get(ch); - } + } else { + return false; } - return result; + } public void delete(String str) { - Trie trie = new Trie(); + TrieNode node = root; - TrieNode v = root; - boolean broExist = false; - String str2 = str; - System.out.println(str2); for (char ch : str.toLowerCase().toCharArray()) { - if ( v != root && !existedChars.contains(ch) ) { - System.out.println(v.children.keySet()); - //v.children.remove(ch); - v.children.put('@', v.children.remove(ch)); - v = v.children.get('@'); - System.out.println(v.children.keySet()); - - } - else { - if (v.children.get(ch) != null) { - System.out.println("else"); - v = v.children.get(ch); - v.leaf = false; - } + if (node.turned) { + node.children.put('@', node.children.remove(ch)); + node = node.children.get('@'); + } else { + node = node.children.get(ch); } } - } diff --git a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java index 4258c6c..4a4b2b2 100644 --- a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java +++ b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java @@ -21,10 +21,12 @@ void exampleTest() { testTrie.insert("rrrrock"); testTrie.insert("word"); testTrie.insert("world"); + testTrie.insert("wored"); + testTrie.insert("wwwww"); assertEquals(true, testTrie.find("word")); testTrie.insert("worty"); assertEquals(true, testTrie.find("worty")); - assertEquals(true, testTrie.find("wor")); + //assertEquals(true, testTrie.find("wor")); assertEquals(false, testTrie.find("hello")); testTrie.insert("kotlin"); assertEquals(true, testTrie.find("kotlin")); @@ -44,7 +46,6 @@ void exampleTest() { assertEquals(false, testTrie.find("walt")); testTrie.delete("worty"); assertEquals(false, testTrie.find("worty")); - assertEquals(true, testTrie.find("wort")); assertEquals(true, testTrie.find("word")); testTrie.delete("kotlin"); assertEquals(false, testTrie.find("kotlin")); From 1508ade8fb754a8d247ab97abe487e37e6a2a439 Mon Sep 17 00:00:00 2001 From: evgenykuzin <32079738+evgenykuzin@users.noreply.github.com> Date: Mon, 12 Mar 2018 21:16:23 +0300 Subject: [PATCH 09/13] upgrade. --- src/main/java/ru/spbstu/kspt/task1/Trie.java | 5 +++-- src/test/java/ru/spbstu/kspt/task1/TrieTest.java | 1 - 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/ru/spbstu/kspt/task1/Trie.java b/src/main/java/ru/spbstu/kspt/task1/Trie.java index b17336f..0b1fe23 100644 --- a/src/main/java/ru/spbstu/kspt/task1/Trie.java +++ b/src/main/java/ru/spbstu/kspt/task1/Trie.java @@ -24,9 +24,11 @@ public void insert(String str) { if (!node.children.containsKey(ch)) { node.children.put(ch, new TrieNode()); + if (node != root) { node.children.get(ch).turned = true; } + } else { if (node.turned) { @@ -69,8 +71,7 @@ public void delete(String str) { for (char ch : str.toLowerCase().toCharArray()) { if (node.turned) { - node.children.put('@', node.children.remove(ch)); - node = node.children.get('@'); + node = node.children.remove(ch); } else { node = node.children.get(ch); } diff --git a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java index 4a4b2b2..3dda063 100644 --- a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java +++ b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java @@ -26,7 +26,6 @@ void exampleTest() { assertEquals(true, testTrie.find("word")); testTrie.insert("worty"); assertEquals(true, testTrie.find("worty")); - //assertEquals(true, testTrie.find("wor")); assertEquals(false, testTrie.find("hello")); testTrie.insert("kotlin"); assertEquals(true, testTrie.find("kotlin")); From 59ed1dc3853d27e129d1a92331e55a799c26a868 Mon Sep 17 00:00:00 2001 From: evgenykuzin <32079738+evgenykuzin@users.noreply.github.com> Date: Tue, 13 Mar 2018 02:22:15 +0300 Subject: [PATCH 10/13] =?UTF-8?q?=D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0?= =?UTF-8?q?=D0=BB=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=BF=D0=BE=D0=B8?= =?UTF-8?q?=D1=81=D0=BA=D0=B0=20=D0=B2=D1=81=D0=B5=D1=85=20=D1=81=D0=BB?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=BF=D0=BE=20=D0=BF=D1=80=D0=B5=D1=84=D0=B8?= =?UTF-8?q?=D0=BA=D1=81=D1=83!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ru/spbstu/kspt/task1/Trie.java | 43 ++++++++++++++++--- .../java/ru/spbstu/kspt/task1/MainTest.java | 2 - .../java/ru/spbstu/kspt/task1/TrieTest.java | 6 +++ 3 files changed, 43 insertions(+), 8 deletions(-) diff --git a/src/main/java/ru/spbstu/kspt/task1/Trie.java b/src/main/java/ru/spbstu/kspt/task1/Trie.java index 0b1fe23..2b744e9 100644 --- a/src/main/java/ru/spbstu/kspt/task1/Trie.java +++ b/src/main/java/ru/spbstu/kspt/task1/Trie.java @@ -48,7 +48,7 @@ public boolean find(String str) { for (char ch : str.toLowerCase().toCharArray()) { - if (!node.children.keySet().contains(ch)) { + if (!node.children.containsKey(ch)) { return false; } else { node = node.children.get(ch); @@ -56,11 +56,7 @@ public boolean find(String str) { } - if (node.leaf) { - return true; - } else { - return false; - } + return node.leaf; } @@ -81,4 +77,39 @@ public void delete(String str) { } + public void search(String prefix) { + TrieNode node = root; + + for (char ch : prefix.toCharArray()) { + node = node.children.get(ch); + } + + StringBuilder word = new StringBuilder().append(prefix); + + searchHelp(word, prefix, node); + + System.out.println("_________________"); + } + + + private static void searchHelp(StringBuilder word, String prefix, TrieNode node) { + + for (Character ch : node.children.keySet()) { + + word.append(ch); + + searchHelp(word, prefix, node.children.get(ch)); + + word.replace(0, word.length(), prefix); + + } + + if (node.leaf) { + System.out.println(word); + } + + + } + + } diff --git a/src/test/java/ru/spbstu/kspt/task1/MainTest.java b/src/test/java/ru/spbstu/kspt/task1/MainTest.java index cbc3b36..6f5046e 100644 --- a/src/test/java/ru/spbstu/kspt/task1/MainTest.java +++ b/src/test/java/ru/spbstu/kspt/task1/MainTest.java @@ -4,8 +4,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import javax.xml.crypto.Data; - import static org.junit.jupiter.api.Assertions.*; class MainTest { diff --git a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java index 3dda063..849bd25 100644 --- a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java +++ b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java @@ -31,6 +31,11 @@ void exampleTest() { assertEquals(true, testTrie.find("kotlin")); testTrie.insert("rrrrrrrrrr"); assertEquals(true, testTrie.find("rrrrrrrrrr")); + + testTrie.search("wor"); + testTrie.search("kot"); + testTrie.search("rrr"); + testTrie.delete("world"); assertEquals(false, testTrie.find("world")); testTrie.delete("rrrrock"); @@ -50,6 +55,7 @@ void exampleTest() { assertEquals(false, testTrie.find("kotlin")); + logger.info("Test finished"); } } From b707a66a5b10122596aa75ce10a2044fa812848b Mon Sep 17 00:00:00 2001 From: evgenykuzin <32079738+evgenykuzin@users.noreply.github.com> Date: Thu, 15 Mar 2018 01:19:44 +0300 Subject: [PATCH 11/13] =?UTF-8?q?=D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0?= =?UTF-8?q?=D0=BB=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=BF=D0=BE=D0=B8?= =?UTF-8?q?=D1=81=D0=BA=D0=B0=20=D0=B2=D1=81=D0=B5=D1=85=20=D1=81=D0=BB?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=BF=D0=BE=20=D0=BF=D1=80=D0=B5=D1=84=D0=B8?= =?UTF-8?q?=D0=BA=D1=81=D1=83!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ru/spbstu/kspt/task1/Trie.java | 25 +++++++++++-------- .../java/ru/spbstu/kspt/task1/TrieTest.java | 4 +-- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/main/java/ru/spbstu/kspt/task1/Trie.java b/src/main/java/ru/spbstu/kspt/task1/Trie.java index 2b744e9..ff2cddc 100644 --- a/src/main/java/ru/spbstu/kspt/task1/Trie.java +++ b/src/main/java/ru/spbstu/kspt/task1/Trie.java @@ -11,7 +11,7 @@ public class Trie { static class TrieNode { Map children = new TreeMap<>(); boolean leaf; - boolean turned; + boolean brunch; } TrieNode root = new TrieNode(); @@ -26,16 +26,12 @@ public void insert(String str) { node.children.put(ch, new TrieNode()); if (node != root) { - node.children.get(ch).turned = true; + node.children.get(ch).brunch = true; } - } else { + } else if (node.brunch) node.brunch = false; - if (node.turned) { - node.turned = false; - } - } node = node.children.get(ch); } @@ -66,7 +62,7 @@ public void delete(String str) { for (char ch : str.toLowerCase().toCharArray()) { - if (node.turned) { + if (node.brunch) { node = node.children.remove(ch); } else { node = node.children.get(ch); @@ -81,9 +77,18 @@ public void search(String prefix) { TrieNode node = root; for (char ch : prefix.toCharArray()) { - node = node.children.get(ch); + + if (node.children.containsKey(ch)) { + node = node.children.get(ch); + } else { + System.out.println("No results for: " + prefix); + return; + } + } + System.out.println("Results for: " + prefix); + StringBuilder word = new StringBuilder().append(prefix); searchHelp(word, prefix, node); @@ -95,7 +100,6 @@ public void search(String prefix) { private static void searchHelp(StringBuilder word, String prefix, TrieNode node) { for (Character ch : node.children.keySet()) { - word.append(ch); searchHelp(word, prefix, node.children.get(ch)); @@ -108,7 +112,6 @@ private static void searchHelp(StringBuilder word, String prefix, TrieNode node) System.out.println(word); } - } diff --git a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java index 849bd25..f3fe92d 100644 --- a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java +++ b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java @@ -22,7 +22,6 @@ void exampleTest() { testTrie.insert("word"); testTrie.insert("world"); testTrie.insert("wored"); - testTrie.insert("wwwww"); assertEquals(true, testTrie.find("word")); testTrie.insert("worty"); assertEquals(true, testTrie.find("worty")); @@ -31,11 +30,10 @@ void exampleTest() { assertEquals(true, testTrie.find("kotlin")); testTrie.insert("rrrrrrrrrr"); assertEquals(true, testTrie.find("rrrrrrrrrr")); - testTrie.search("wor"); testTrie.search("kot"); testTrie.search("rrr"); - + testTrie.search("hello"); testTrie.delete("world"); assertEquals(false, testTrie.find("world")); testTrie.delete("rrrrock"); From 8f596323b7c03bf00b68423694d0a3a215bfcf3f Mon Sep 17 00:00:00 2001 From: evgenykuzin <32079738+evgenykuzin@users.noreply.github.com> Date: Thu, 22 Mar 2018 03:15:37 +0300 Subject: [PATCH 12/13] toString --- src/main/java/ru/spbstu/kspt/task1/Trie.java | 103 +++++++++++------- .../java/ru/spbstu/kspt/task1/TrieTest.java | 3 + 2 files changed, 64 insertions(+), 42 deletions(-) diff --git a/src/main/java/ru/spbstu/kspt/task1/Trie.java b/src/main/java/ru/spbstu/kspt/task1/Trie.java index ff2cddc..cb9785a 100644 --- a/src/main/java/ru/spbstu/kspt/task1/Trie.java +++ b/src/main/java/ru/spbstu/kspt/task1/Trie.java @@ -1,5 +1,6 @@ package ru.spbstu.kspt.task1; +import jdk.nashorn.internal.runtime.regexp.joni.Regex; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -10,109 +11,127 @@ public class Trie { static class TrieNode { Map children = new TreeMap<>(); - boolean leaf; - boolean brunch; + boolean branch; } - TrieNode root = new TrieNode(); public void insert(String str) { TrieNode node = root; - for (char ch : str.toLowerCase().toCharArray()) { - if (!node.children.containsKey(ch)) { node.children.put(ch, new TrieNode()); - if (node != root) { - node.children.get(ch).brunch = true; + node.children.get(ch).branch = true; } - - } else if (node.brunch) node.brunch = false; - - + } else if (node.branch) { + node.branch = false; + } node = node.children.get(ch); } - - node.leaf = true; } public boolean find(String str) { TrieNode node = root; - for (char ch : str.toLowerCase().toCharArray()) { - if (!node.children.containsKey(ch)) { return false; } else { node = node.children.get(ch); } - } - - return node.leaf; - + return true; } public void delete(String str) { TrieNode node = root; - for (char ch : str.toLowerCase().toCharArray()) { - - if (node.brunch) { + if (node.branch) { node = node.children.remove(ch); } else { node = node.children.get(ch); } - } - } + ArrayList list = new ArrayList(); - public void search(String prefix) { + public ArrayList search(String prefix) { TrieNode node = root; - + list.clear(); for (char ch : prefix.toCharArray()) { - if (node.children.containsKey(ch)) { node = node.children.get(ch); } else { - System.out.println("No results for: " + prefix); - return; + logger.error("No results for: " + prefix); + return list; } - } + StringBuilder word = new StringBuilder().append(prefix); + searchHelp(word, prefix, node); + return list; + } - System.out.println("Results for: " + prefix); - StringBuilder word = new StringBuilder().append(prefix); + private void searchHelp(StringBuilder word, String prefix, TrieNode node) { + TrieNode bazeNode = node; + Character c = ' '; + for (Character ch : node.children.keySet()) { + word.append(ch); + searchHelp(word, prefix, node.children.get(ch)); + word.replace(0, word.length(), prefix); + c = ch; + } + if (node.children.get(c) == null) { + list.add(word.toString()); + } + } - searchHelp(word, prefix, node); - System.out.println("_________________"); + public boolean equals(Trie trie, Trie anTrie) { + TrieNode node1 = root; + TrieNode node2 = root; + return trie.equals(anTrie); } - private static void searchHelp(StringBuilder word, String prefix, TrieNode node) { + public String toString() { + return toStringHelp(root, 0); + } + StringBuilder strB = new StringBuilder(); + private String toStringHelp(TrieNode node, int i) { + StringBuilder word = new StringBuilder(); + Character c = ' '; for (Character ch : node.children.keySet()) { - word.append(ch); + word.append(indentation(i)).append(ch).append("\r"); + toStringHelp(node.children.get(ch), i + 1); + strB = strB.append(word, 0, word.length()); + } - searchHelp(word, prefix, node.children.get(ch)); + if (node.children == null) { + return word.toString(); + } else return word.toString(); + } - word.replace(0, word.length(), prefix); + static Map indentsMap = new HashMap<>(); + public String indentation(int i){ + String result = indentsMap.get(i); + if (result == null) { + StringBuilder indent = new StringBuilder(); + for (int k = 0; k < i; k++) { + indent.append(" "); + } + result = indent.toString(); + indentsMap.put(i, result); } + return result; + } - if (node.leaf) { - System.out.println(word); - } - } } diff --git a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java index f3fe92d..f8eb520 100644 --- a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java +++ b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java @@ -34,6 +34,8 @@ void exampleTest() { testTrie.search("kot"); testTrie.search("rrr"); testTrie.search("hello"); + testTrie.search("wo"); + testTrie.toString(); testTrie.delete("world"); assertEquals(false, testTrie.find("world")); testTrie.delete("rrrrock"); @@ -54,6 +56,7 @@ void exampleTest() { + logger.info("Test finished"); } } From d60546b10d5503c8c67f69f24e040007ab0efb13 Mon Sep 17 00:00:00 2001 From: evgenykuzin <32079738+evgenykuzin@users.noreply.github.com> Date: Tue, 10 Apr 2018 21:15:49 +0300 Subject: [PATCH 13/13] =?UTF-8?q?=D0=B4=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0?= =?UTF-8?q?=D0=BB=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/wrapper/gradle-wrapper.properties | 3 +- src/main/java/ru/spbstu/kspt/task1/Main.java | 16 ---- src/main/java/ru/spbstu/kspt/task1/Trie.java | 95 ++++++++++--------- .../java/ru/spbstu/kspt/task1/MainTest.java | 18 ---- .../java/ru/spbstu/kspt/task1/TrieTest.java | 94 ++++++++++++++---- 5 files changed, 127 insertions(+), 99 deletions(-) delete mode 100644 src/main/java/ru/spbstu/kspt/task1/Main.java delete mode 100644 src/test/java/ru/spbstu/kspt/task1/MainTest.java diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2c2bbe5..333dd6c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Mon Mar 26 16:07:28 MSK 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4.1-all.zip diff --git a/src/main/java/ru/spbstu/kspt/task1/Main.java b/src/main/java/ru/spbstu/kspt/task1/Main.java deleted file mode 100644 index 0b91675..0000000 --- a/src/main/java/ru/spbstu/kspt/task1/Main.java +++ /dev/null @@ -1,16 +0,0 @@ -package ru.spbstu.kspt.task1; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -/** - * Main class - */ -public class Main { - private static final Logger logger = LogManager.getLogger(Main.class); - - public static void main(String[] args) { - logger.debug("Logging example"); - System.out.println("Hello World!"); - } -} diff --git a/src/main/java/ru/spbstu/kspt/task1/Trie.java b/src/main/java/ru/spbstu/kspt/task1/Trie.java index cb9785a..81057b9 100644 --- a/src/main/java/ru/spbstu/kspt/task1/Trie.java +++ b/src/main/java/ru/spbstu/kspt/task1/Trie.java @@ -1,20 +1,15 @@ package ru.spbstu.kspt.task1; -import jdk.nashorn.internal.runtime.regexp.joni.Regex; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - import java.util.*; public class Trie { - private static final Logger logger = LogManager.getLogger(Main.class); static class TrieNode { Map children = new TreeMap<>(); boolean branch; } - TrieNode root = new TrieNode(); + TrieNode root = new TrieNode(); public void insert(String str) { TrieNode node = root; @@ -31,7 +26,6 @@ public void insert(String str) { } } - public boolean find(String str) { TrieNode node = root; for (char ch : str.toLowerCase().toCharArray()) { @@ -44,39 +38,51 @@ public boolean find(String str) { return true; } - public void delete(String str) { TrieNode node = root; for (char ch : str.toLowerCase().toCharArray()) { - if (node.branch) { - node = node.children.remove(ch); - } else { - node = node.children.get(ch); + if (node.children.get(ch) != null) { + if (node.branch) { + node = node.children.remove(ch); + } else { + node = node.children.get(ch); + } } } } - ArrayList list = new ArrayList(); + private ArrayList list = new ArrayList<>(); public ArrayList search(String prefix) { TrieNode node = root; list.clear(); + char c = ' '; for (char ch : prefix.toCharArray()) { if (node.children.containsKey(ch)) { node = node.children.get(ch); } else { - logger.error("No results for: " + prefix); - return list; + throw new IllegalArgumentException("No results for: " + prefix); + } + c = ch; + } + if (!node.branch && c != ' ') { + for (char ch : node.children.keySet()) { + StringBuilder prefixBuilder = new StringBuilder(prefix); + if (node.children.get(ch) == null) break; + prefixBuilder.append(ch); + searchHelp(prefixBuilder, prefixBuilder.toString(), node.children.get(ch)); } + } else { + StringBuilder word = new StringBuilder(prefix); + searchHelp(word, prefix, node); + } + if (list == null) { + throw new IllegalArgumentException("no results for: " + prefix); } - StringBuilder word = new StringBuilder().append(prefix); - searchHelp(word, prefix, node); return list; } - private void searchHelp(StringBuilder word, String prefix, TrieNode node) { - TrieNode bazeNode = node; Character c = ' '; for (Character ch : node.children.keySet()) { word.append(ch); @@ -89,49 +95,50 @@ private void searchHelp(StringBuilder word, String prefix, TrieNode node) { } } - - public boolean equals(Trie trie, Trie anTrie) { - TrieNode node1 = root; - TrieNode node2 = root; - return trie.equals(anTrie); - } - - + @Override public String toString() { - return toStringHelp(root, 0); + return toStringHelp(root, new StringBuilder(), 0); } - StringBuilder strB = new StringBuilder(); - private String toStringHelp(TrieNode node, int i) { - StringBuilder word = new StringBuilder(); - Character c = ' '; + private String toStringHelp(TrieNode node, StringBuilder word, int i) { + for (Character ch : node.children.keySet()) { - word.append(indentation(i)).append(ch).append("\r"); - toStringHelp(node.children.get(ch), i + 1); - strB = strB.append(word, 0, word.length()); + StringBuilder strB = new StringBuilder(); + strB.append(addSpace(i)).append(ch); + if (node.children != null) { + toStringHelp(node.children.get(ch), word, i + 1); + word.insert(0, strB.append("\r").toString()); + } + } - if (node.children == null) { - return word.toString(); - } else return word.toString(); + + + return word.toString(); } - static Map indentsMap = new HashMap<>(); + private static Map spacesMap = new HashMap<>(); - public String indentation(int i){ - String result = indentsMap.get(i); + private String addSpace(int i) { + String result = spacesMap.get(i); if (result == null) { StringBuilder indent = new StringBuilder(); for (int k = 0; k < i; k++) { indent.append(" "); } result = indent.toString(); - indentsMap.put(i, result); + spacesMap.put(i, result); } return result; - } - + } + public boolean equals(Trie anTrie) { + return this.toString().equals(anTrie.toString()); + } + @Override + public int hashCode() { + return Objects.hash(root); + } } diff --git a/src/test/java/ru/spbstu/kspt/task1/MainTest.java b/src/test/java/ru/spbstu/kspt/task1/MainTest.java deleted file mode 100644 index 6f5046e..0000000 --- a/src/test/java/ru/spbstu/kspt/task1/MainTest.java +++ /dev/null @@ -1,18 +0,0 @@ -package ru.spbstu.kspt.task1; - -import org.junit.jupiter.api.Test; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import static org.junit.jupiter.api.Assertions.*; - -class MainTest { - private static final Logger logger = LogManager.getLogger(MainTest.class); - - @Test - void exampleTest() { - logger.info("Test started"); - assertEquals(10, 10); - logger.info("Test finished"); - } -} diff --git a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java index f8eb520..0637045 100644 --- a/src/test/java/ru/spbstu/kspt/task1/TrieTest.java +++ b/src/test/java/ru/spbstu/kspt/task1/TrieTest.java @@ -1,17 +1,18 @@ package ru.spbstu.kspt.task1; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertEquals; +import java.util.ArrayList; + +import static org.junit.jupiter.api.Assertions.*; public class TrieTest { - private static final Logger logger = LogManager.getLogger(MainTest.class); + + @Test - void exampleTest() { - logger.info("Test started"); + void insertAndDeleteTest() { Trie testTrie = new Trie(); testTrie.insert("wolk"); testTrie.insert("kotAssFirst"); @@ -22,20 +23,21 @@ void exampleTest() { testTrie.insert("word"); testTrie.insert("world"); testTrie.insert("wored"); + testTrie.insert("worry"); + testTrie.insert("kotlin"); + testTrie.insert("rrrrrrrrrr"); assertEquals(true, testTrie.find("word")); - testTrie.insert("worty"); - assertEquals(true, testTrie.find("worty")); + assertEquals(true, testTrie.find("worry")); assertEquals(false, testTrie.find("hello")); - testTrie.insert("kotlin"); assertEquals(true, testTrie.find("kotlin")); - testTrie.insert("rrrrrrrrrr"); + assertEquals(true, testTrie.find("wolk")); + assertEquals(true, testTrie.find("kotAssFirst")); + assertEquals(true, testTrie.find("russian")); + assertEquals(true, testTrie.find("rrrrock")); + assertEquals(true, testTrie.find("walt")); + assertEquals(true, testTrie.find("roll")); assertEquals(true, testTrie.find("rrrrrrrrrr")); - testTrie.search("wor"); - testTrie.search("kot"); - testTrie.search("rrr"); - testTrie.search("hello"); - testTrie.search("wo"); - testTrie.toString(); + assertEquals(true, testTrie.find("kotlin")); testTrie.delete("world"); assertEquals(false, testTrie.find("world")); testTrie.delete("rrrrock"); @@ -48,15 +50,67 @@ void exampleTest() { assertEquals(false, testTrie.find("roll")); testTrie.delete("walt"); assertEquals(false, testTrie.find("walt")); - testTrie.delete("worty"); - assertEquals(false, testTrie.find("worty")); + testTrie.delete("worry"); + assertEquals(false, testTrie.find("worry")); assertEquals(true, testTrie.find("word")); testTrie.delete("kotlin"); assertEquals(false, testTrie.find("kotlin")); + } + @Test + void searchTest() { + ArrayList list = new ArrayList<>(); + Trie trie = new Trie(); + trie.insert("worry"); + trie.insert("world"); + trie.insert("word"); + trie.insert("wored"); + trie.insert("kotlin"); + trie.insert("kotassfirst"); + trie.insert("wolt"); + trie.insert("wolk"); + list.add("word"); + list.add("wored"); + list.add("world"); + list.add("worry"); + assertEquals(list ,trie.search("wor")); + list.clear(); + list.add("kotassfirst"); + list.add("kotlin"); + assertEquals(list, trie.search("kot")); + list.clear(); + list.add("wolk"); + list.add("wolt"); + list.add("word"); + list.add("wored"); + list.add("world"); + list.add("worry"); + assertEquals(list, trie.search("wo")); + list.clear(); + try { + trie.search("hello"); + } + catch (IllegalArgumentException e){ + assertEquals("No results for: hello", e.getMessage()); + } + } + @Test + void toStringTest() { + Trie trie = new Trie(); + trie.insert("hello"); + trie.insert("hey"); + trie.insert("hola"); + Assertions.assertEquals("h\r o\r l\r a\r e\r" + " y\r" + " l\r l\r o\r", trie.toString()); + } - - logger.info("Test finished"); + @Test + void equalsTest() { + Trie firstTrie = new Trie(); + Trie secondTrie = new Trie(); + firstTrie.insert("hello"); + secondTrie.insert("hello"); + assertFalse(new Trie().equals(secondTrie)); + assertTrue(firstTrie.equals(secondTrie)); } }