Skip to content

Commit

Permalink
[pdsl_core] Convert collection tests to use test_utils::run_test faci…
Browse files Browse the repository at this point in the history
…lity
  • Loading branch information
Robbepop committed Jan 4, 2019
1 parent 855fe02 commit cb7894c
Show file tree
Hide file tree
Showing 3 changed files with 416 additions and 337 deletions.
158 changes: 85 additions & 73 deletions pdsl_core/src/storage/collections/hash_map/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
// You should have received a copy of the GNU General Public License
// along with pDSL. If not, see <http://www.gnu.org/licenses/>.

use crate::storage::{
self,
Key,
use crate::{
test_utils::run_test,
storage::{self, Key},
};

fn new_empty<K, V>() -> storage::HashMap<K, V> {
Expand All @@ -30,94 +30,106 @@ fn new_empty<K, V>() -> storage::HashMap<K, V> {

#[test]
fn new_unchecked() {
let map = new_empty::<u8, String>();
assert_eq!(map.len(), 0);
assert_eq!(map.is_empty(), true);
run_test(|| {
let map = new_empty::<u8, String>();
assert_eq!(map.len(), 0);
assert_eq!(map.is_empty(), true);
})
}

#[test]
fn insert() {
let mut map = new_empty::<String, String>();
assert_eq!(map.len(), 0);
// Insert empty
assert_eq!(map.insert("1".into(), "Hello".into()), None);
// Should increase len.
assert_eq!(map.len(), 1);
// Insert overwrite
assert_eq!(map.insert("1".into(), ", World!".into()), Some("Hello".into()));
// Should *not* increase len.
assert_eq!(map.len(), 1);
// Should return the new value
assert_eq!(map.get("1"), Some(&", World!".into()));
run_test(|| {
let mut map = new_empty::<String, String>();
assert_eq!(map.len(), 0);
// Insert empty
assert_eq!(map.insert("1".into(), "Hello".into()), None);
// Should increase len.
assert_eq!(map.len(), 1);
// Insert overwrite
assert_eq!(map.insert("1".into(), ", World!".into()), Some("Hello".into()));
// Should *not* increase len.
assert_eq!(map.len(), 1);
// Should return the new value
assert_eq!(map.get("1"), Some(&", World!".into()));
})
}

#[test]
fn contains() {
let mut map = new_empty::<String, String>();
// Inserts some elements
assert_eq!(map.insert("x".into(), "Anton".into()), None);
assert_eq!(map.insert("y".into(), "Wolfram".into()), None);
// Check contains `true`
assert_eq!(map.contains_key("x"), true);
assert_eq!(map.contains_key("y"), true);
// Check contains `false`
assert_eq!(map.contains_key("Anton"), false);
assert_eq!(map.contains_key(""), false);
run_test(|| {
let mut map = new_empty::<String, String>();
// Inserts some elements
assert_eq!(map.insert("x".into(), "Anton".into()), None);
assert_eq!(map.insert("y".into(), "Wolfram".into()), None);
// Check contains `true`
assert_eq!(map.contains_key("x"), true);
assert_eq!(map.contains_key("y"), true);
// Check contains `false`
assert_eq!(map.contains_key("Anton"), false);
assert_eq!(map.contains_key(""), false);
})
}

#[test]
fn remove() {
let mut map = new_empty::<String, String>();
// Inserts some elements
assert_eq!(map.insert("Dog".into(), "Animal".into()), None);
assert_eq!(map.insert("Ant".into(), "Insect".into()), None);
assert_eq!(map.insert("Eel".into(), "Fish".into()), None);
assert_eq!(map.insert("Robin".into(), "Bird".into()), None);
assert_eq!(map.len(), 4);
// Remove them again
assert_eq!(map.remove("Eel"), Some("Fish".into()));
assert_eq!(map.len(), 3);
assert_eq!(map.remove("Ant"), Some("Insect".into()));
assert_eq!(map.len(), 2);
assert_eq!(map.remove("Dog"), Some("Animal".into()));
assert_eq!(map.len(), 1);
assert_eq!(map.remove("Robin"), Some("Bird".into()));
assert_eq!(map.len(), 0);
run_test(|| {
let mut map = new_empty::<String, String>();
// Inserts some elements
assert_eq!(map.insert("Dog".into(), "Animal".into()), None);
assert_eq!(map.insert("Ant".into(), "Insect".into()), None);
assert_eq!(map.insert("Eel".into(), "Fish".into()), None);
assert_eq!(map.insert("Robin".into(), "Bird".into()), None);
assert_eq!(map.len(), 4);
// Remove them again
assert_eq!(map.remove("Eel"), Some("Fish".into()));
assert_eq!(map.len(), 3);
assert_eq!(map.remove("Ant"), Some("Insect".into()));
assert_eq!(map.len(), 2);
assert_eq!(map.remove("Dog"), Some("Animal".into()));
assert_eq!(map.len(), 1);
assert_eq!(map.remove("Robin"), Some("Bird".into()));
assert_eq!(map.len(), 0);
})
}

#[test]
fn get() {
let mut map = new_empty::<String, String>();
// Inserts some elements
assert_eq!(map.insert("Black".into(), "White".into()), None);
assert_eq!(map.insert("Up".into(), "Down".into()), None);
// Check if get returns the right answer
assert_eq!(map.get("Black"), Some(&"White".into()));
assert_eq!(map.get("Up"), Some(&"Down".into()));
assert_eq!(map.get("Forward"), None);
run_test(|| {
let mut map = new_empty::<String, String>();
// Inserts some elements
assert_eq!(map.insert("Black".into(), "White".into()), None);
assert_eq!(map.insert("Up".into(), "Down".into()), None);
// Check if get returns the right answer
assert_eq!(map.get("Black"), Some(&"White".into()));
assert_eq!(map.get("Up"), Some(&"Down".into()));
assert_eq!(map.get("Forward"), None);
})
}

#[test]
fn mutate_with() {
let mut map = new_empty::<String, String>();
// Inserts some elements
assert_eq!(map.insert("Dog Breed".into(), "Akita".into()), None); // Shiba Inu
assert_eq!(map.insert("Cat Breed".into(), "Bengal".into()), None); // Burmilla
// Verify the inserted breeds
assert_eq!(map.get("Dog Breed"), Some(&"Akita".into()));
assert_eq!(map.get("Cat Breed"), Some(&"Bengal".into()));
// Change the breeds
assert_eq!(
map.mutate_with("Dog Breed", |breed| *breed = "Shiba Inu".into()),
Some(&"Shiba Inu".into())
);
assert_eq!(
map.mutate_with("Cat Breed", |breed| breed.push_str(" Shorthair")),
Some(&"Bengal Shorthair".into())
);
// Verify the mutated breeds
assert_eq!(map.get("Dog Breed"), Some(&"Shiba Inu".into()));
assert_eq!(map.get("Cat Breed"), Some(&"Bengal Shorthair".into()));
// Mutate for non-existing key
assert_eq!(map.mutate_with("Bird Breed", |breed| *breed = "Parrot".into()), None);
run_test(|| {
let mut map = new_empty::<String, String>();
// Inserts some elements
assert_eq!(map.insert("Dog Breed".into(), "Akita".into()), None); // Shiba Inu
assert_eq!(map.insert("Cat Breed".into(), "Bengal".into()), None); // Burmilla
// Verify the inserted breeds
assert_eq!(map.get("Dog Breed"), Some(&"Akita".into()));
assert_eq!(map.get("Cat Breed"), Some(&"Bengal".into()));
// Change the breeds
assert_eq!(
map.mutate_with("Dog Breed", |breed| *breed = "Shiba Inu".into()),
Some(&"Shiba Inu".into())
);
assert_eq!(
map.mutate_with("Cat Breed", |breed| breed.push_str(" Shorthair")),
Some(&"Bengal Shorthair".into())
);
// Verify the mutated breeds
assert_eq!(map.get("Dog Breed"), Some(&"Shiba Inu".into()));
assert_eq!(map.get("Cat Breed"), Some(&"Bengal Shorthair".into()));
// Mutate for non-existing key
assert_eq!(map.mutate_with("Bird Breed", |breed| *breed = "Parrot".into()), None);
})
}
Loading

0 comments on commit cb7894c

Please sign in to comment.