diff --git a/test-nn.cr b/test-nn.cr new file mode 100644 index 0000000..0187900 --- /dev/null +++ b/test-nn.cr @@ -0,0 +1,57 @@ +require "json" +require "uuid/json" +require "./src/fs.cr" + +class Article + JSON.mapping({ + title: String, + id: String, + tags: Array(String) + }) + def initialize(@title, @tags) + @id = UUID.random.to_s + end +end + +s = FS::Hash(String, Article).new "test-storage-nn" + +s.new_nn_partition "tags", &.tags.map(&.downcase) + +article = Article.new "Mutsuki", ["mutsuki", "kuchikukan"] +s[article.id] = article + +article = Article.new "Kisaragi", ["mutsuki", "kuchikukan"] +s[article.id] = article + +article = Article.new "Kongou", ["kongou", "senkan"] +s[article.id] = article + +article = Article.new "Haruna", ["kongou", "senkan"] +s[article.id] = article + +article = Article.new "Satsuki", ["mutsuki", "kuchikukan"] +s[article.id] = article + +article = Article.new "Shiratsuyu", ["shiratsuyu", "kuchikukan"] +s[article.id] = article + +article = Article.new "Yuudachi", ["shiratsuyu", "kuchikukan"] +s[article.id] = article + +pp! s.get_nn_partition("tags", "senkan").map &.title +pp! s.get_nn_partition("tags", "kuchikukan").map &.title +pp! s.get_nn_partition("tags", "mutsuki").map &.title +pp! s.get_nn_partition("tags", "shiratsuyu").map &.title + +s.to_h.size.times do + first = s.to_h.to_a[0][1] + puts "Testing removal of the “#{first.title}” item." + + s.delete first.id + + pp! s.get_nn_partition("tags", "senkan").map &.title + pp! s.get_nn_partition("tags", "kuchikukan").map &.title + pp! s.get_nn_partition("tags", "mutsuki").map &.title + pp! s.get_nn_partition("tags", "shiratsuyu").map &.title +end +