From ccc49b241d94c74afe6ffa04df964cb00982d714 Mon Sep 17 00:00:00 2001 From: Elias Renman Date: Sun, 7 May 2023 15:50:54 +0200 Subject: [PATCH] test: improved test coverage --- src/tests/index_test.rs | 49 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/tests/index_test.rs b/src/tests/index_test.rs index b5012fc..a6972c1 100644 --- a/src/tests/index_test.rs +++ b/src/tests/index_test.rs @@ -29,4 +29,53 @@ mod index_test { println!("Found Row: {}", pretty_print.unwrap()); } } + + #[test] + fn should_create_reverse_index() { + let indexes = hashmap!["race" => Index::new("race".to_string(), Some(true), Some(false))]; + let mut table: Table = Table::new("Cats", "id", Some(indexes)); + let _ = table.insert_row(row!["id" => 1, "name" => "Ozzy", "race" => "cat"]); + _ = table.insert_row(row!["id" => 2, "name" => "Simon", "race" => "cat"]); + _ = table.insert_row(row!["id" => 3, "name" => "Gosa", "race" => "dog"]); + + let result = table.get_pks_by_index("race".to_string(), json!("cat")); + + assert_eq!(result.is_ok(), true); + + let ids = result.unwrap(); + assert_eq!(ids, vec![2, 1]); + } + + #[test] + fn should_create_unique_index_and_fail_insert() { + let indexes = hashmap!["race" => Index::new("race".to_string(), Some(false), Some(true))]; + let mut table: Table = Table::new("Cats", "id", Some(indexes)); + let _ = table.insert_row(row!["id" => 1, "name" => "Ozzy", "race" => "cat"]); + _ = table.insert_row(row!["id" => 3, "name" => "Gosa", "race" => "dog"]); + + let err = table.insert_row(row!["id" => 2, "name" => "Simon", "race" => "cat"]); + assert_eq!(err.is_err(), true); + } + + #[test] + fn should_create_unique_index() { + let indexes = hashmap!["race" => Index::new("race".to_string(), Some(false), Some(true))]; + let mut table: Table = Table::new("Cats", "id", Some(indexes)); + let _ = table.insert_row(row!["id" => 1, "name" => "Ozzy", "race" => "cat"]); + _ = table.insert_row(row!["id" => 3, "name" => "Gosa", "race" => "dog"]); + + let result = table.get_pks_by_index("race".to_string(), json!("cat")); + + assert_eq!(result.is_ok(), true); + + let ids = result.unwrap(); + assert_eq!(ids, vec![1]); + + let result = table.get_pks_by_index("race".to_string(), json!("dog")); + + assert_eq!(result.is_ok(), true); + + let ids = result.unwrap(); + assert_eq!(ids, vec![3]); + } }