diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d534b4..c3fa5c3 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### v0.1.9 +* New map_is_empty command. * New map_size command. * New map_remove command. * New is_map command. diff --git a/docs/sdk.md b/docs/sdk.md index d4773f1..d0ceffc 100644 --- a/docs/sdk.md +++ b/docs/sdk.md @@ -24,6 +24,7 @@ * [std::collections::IsMap (is_map)](#std__collections__IsMap) * [std::collections::Map (map)](#std__collections__Map) * [std::collections::MapGet (map_get)](#std__collections__MapGet) +* [std::collections::MapIsEmpty (map_is_empty)](#std__collections__MapIsEmpty) * [std::collections::MapPut (map_put)](#std__collections__MapPut) * [std::collections::MapRemove (map_remove)](#std__collections__MapRemove) * [std::collections::MapSize (map_size)](#std__collections__MapSize) @@ -1138,6 +1139,45 @@ release ${handle} #### Aliases: map_get + +## std::collections::MapIsEmpty + +```sh +var = map_is_empty handle +``` + +Returns true if the provided map handle is an empty map. + +#### Parameters + +The map handle. + +#### Return Value + +True if the provided handle belongs to an empty map. + +#### Examples + +```sh +handle = map +map_put ${handle} key value +empty = map_is_empty ${handle} +``` + + +#### Source: + +```sh + +scope::map_is_empty::length = map_size ${scope::map_is_empty::argument::1} +equals 0 ${scope::map_is_empty::length} + +``` + + +#### Aliases: +map_is_empty + ## std::collections::MapPut ```sh diff --git a/duckscript_sdk/src/sdk/std/collections/map_is_empty/help.md b/duckscript_sdk/src/sdk/std/collections/map_is_empty/help.md new file mode 100644 index 0000000..6c46ebd --- /dev/null +++ b/duckscript_sdk/src/sdk/std/collections/map_is_empty/help.md @@ -0,0 +1,21 @@ +```sh +var = map_is_empty handle +``` + +Returns true if the provided map handle is an empty map. + +#### Parameters + +The map handle. + +#### Return Value + +True if the provided handle belongs to an empty map. + +#### Examples + +```sh +handle = map +map_put ${handle} key value +empty = map_is_empty ${handle} +``` diff --git a/duckscript_sdk/src/sdk/std/collections/map_is_empty/mod.rs b/duckscript_sdk/src/sdk/std/collections/map_is_empty/mod.rs new file mode 100755 index 0000000..a1a2593 --- /dev/null +++ b/duckscript_sdk/src/sdk/std/collections/map_is_empty/mod.rs @@ -0,0 +1,22 @@ +use crate::types::command::create_alias_command; +use crate::utils::pckg; +use duckscript::types::command::Command; +use duckscript::types::error::ScriptError; + +#[cfg(test)] +#[path = "./mod_test.rs"] +mod mod_test; + +pub(crate) fn create(package: &str) -> Result, ScriptError> { + let name = pckg::concat(package, "MapIsEmpty"); + let command = create_alias_command( + name, + vec!["map_is_empty".to_string()], + include_str!("help.md").to_string(), + "map_is_empty".to_string(), + include_str!("script.ds").to_string(), + 1, + )?; + + Ok(Box::new(command)) +} diff --git a/duckscript_sdk/src/sdk/std/collections/map_is_empty/mod_test.rs b/duckscript_sdk/src/sdk/std/collections/map_is_empty/mod_test.rs new file mode 100644 index 0000000..cbc4367 --- /dev/null +++ b/duckscript_sdk/src/sdk/std/collections/map_is_empty/mod_test.rs @@ -0,0 +1,7 @@ +use super::*; +use crate::test; + +#[test] +fn common_functions() { + test::test_common_command_functions(create("").unwrap()); +} diff --git a/duckscript_sdk/src/sdk/std/collections/map_is_empty/script.ds b/duckscript_sdk/src/sdk/std/collections/map_is_empty/script.ds new file mode 100644 index 0000000..69392ea --- /dev/null +++ b/duckscript_sdk/src/sdk/std/collections/map_is_empty/script.ds @@ -0,0 +1,3 @@ + +scope::map_is_empty::length = map_size ${scope::map_is_empty::argument::1} +equals 0 ${scope::map_is_empty::length} diff --git a/duckscript_sdk/src/sdk/std/collections/mod.rs b/duckscript_sdk/src/sdk/std/collections/mod.rs index 8fbe1ba..72836b5 100755 --- a/duckscript_sdk/src/sdk/std/collections/mod.rs +++ b/duckscript_sdk/src/sdk/std/collections/mod.rs @@ -9,6 +9,7 @@ mod is_array; mod is_map; mod map; mod map_get; +mod map_is_empty; mod map_put; mod map_remove; mod map_size; @@ -36,6 +37,7 @@ pub(crate) fn load(commands: &mut Commands, parent: &str) -> Result<(), ScriptEr commands.set(is_map::create(&package))?; commands.set(map::create(&package))?; commands.set(map_get::create(&package))?; + commands.set(map_is_empty::create(&package)?)?; commands.set(map_put::create(&package))?; commands.set(map_remove::create(&package))?; commands.set(map_size::create(&package))?; diff --git a/test/std/collections/array_is_empty_test.ds b/test/std/collections/array_is_empty_test.ds new file mode 100644 index 0000000..e10ef28 --- /dev/null +++ b/test/std/collections/array_is_empty_test.ds @@ -0,0 +1,30 @@ + +fn test_size_empty + handle = array + + result = array_is_empty ${handle} + assert ${result} + + release ${handle} +end + +fn test_size_emptied + handle = array + + result = array_push ${handle} value + assert_eq ${result} true + array_pop ${handle} + + result = array_is_empty ${handle} + assert ${result} + release ${handle} +end + +fn test_size_not_empty + handle = array 1 2 3 + + result = array_is_empty ${handle} + assert_false ${result} + + release ${handle} +end diff --git a/test/std/collections/map_is_empty_test.ds b/test/std/collections/map_is_empty_test.ds new file mode 100644 index 0000000..039c158 --- /dev/null +++ b/test/std/collections/map_is_empty_test.ds @@ -0,0 +1,35 @@ + +fn test_size_empty + handle = map + + result = map_is_empty ${handle} + assert ${result} + + release ${handle} +end + +fn test_size_emptied + handle = map + + result = map_put ${handle} key value + assert_eq ${result} true + map_remove ${handle} key + + result = map_is_empty ${handle} + assert ${result} + release ${handle} +end + +fn test_size_not_empty + handle = map + + result = map_put ${handle} a 1 + result = map_put ${handle} b 2 + result = map_put ${handle} c 3 + result = map_put ${handle} a 4 + + result = map_is_empty ${handle} + assert_false ${result} + + release ${handle} +end