Douglas Andreani 5 жил өмнө
parent
commit
e58f7cdd0a
4 өөрчлөгдсөн 87 нэмэгдсэн , 67 устгасан
  1. 6 0
      .gitignore
  2. 3 2
      Cargo.toml
  3. 0 65
      src/main.rs
  4. 78 0
      src/nodes.rs

+ 6 - 0
.gitignore

@@ -11,3 +11,9 @@
 # Generated by Cargo
 /target/
 
+
+
+#Added by cargo
+
+/target
+Cargo.lock

+ 3 - 2
Cargo.toml

@@ -1,9 +1,10 @@
 [package]
 name = "rusted-mem"
 version = "0.1.0"
-authors = ["Douglas Andreani <cmtedouglas@hotmail.com>"]
+authors = ["Douglas Andreani <andreani.dr at gmail.com>"]
 edition = "2018"
 
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
-[dependencies]
+[lib]
+path = "src/nodes.rs"

+ 0 - 65
src/main.rs

@@ -1,65 +0,0 @@
-
-struct Nodes<T> {
-     data: Vec<DataNode<T>>
-}
-
-impl<T> Nodes<T> {
-    fn new() -> Nodes<T> {
-        Nodes {
-            data: Vec::new()
-        }
-    }
-
-    fn add_node(&mut self, member: DataNode<T>) {
-        self.data.push(member)
-    }
-
-    fn is_empty(&mut self) -> bool {
-        self.data.len() == 0
-    }
-
-    fn pop_node(&mut self) -> Option<DataNode<T>>{
-        self.data.pop()
-    }
-}
-
-struct DataNode<T> {
-    key: String,
-    value: Option<T>
-}
-
-impl<T> DataNode<T> {
-    fn new(t_key: &str, t_value: Option<T>) -> DataNode<T>{
-        DataNode {
-            key: String::from(t_key),
-            value: Option::from(t_value)
-        }
-    }
-}
-
-
-fn main() {
-    let mut n = Nodes::new();
-
-    let d = DataNode::new("Key1", Option::from("Hello"));
-    let c = DataNode::new("Key2", Option::from("World"));
-
-    n.add_node(d);
-    n.add_node(c);
-
-
-    while !n.is_empty() {
-        let dd = n.pop_node();
-        match dd {
-            None => println!("Nodes not initialized",),
-            Some(node) => {
-                match node.value {
-                    None =>println!("Key {} Value: NULL", node.key),
-                    Some(value) => println!("Key {} Value: {:?}", node.key, value),
-                }
-            }
-        }
-    }
-}
-
-

+ 78 - 0
src/nodes.rs

@@ -0,0 +1,78 @@
+
+struct Nodes<T> {
+     data: Vec<DataNode<T>>
+}
+
+impl<T> Nodes<T> {
+    fn new() -> Nodes<T> {
+        Nodes {
+            data: Vec::new()
+        }
+    }
+
+    fn add_node(&mut self, member: DataNode<T>) {
+        self.data.push(member)
+    }
+
+    fn is_empty(&mut self) -> bool {
+        self.data.len() == 0
+    }
+
+    fn pop_node(&mut self) -> Option<DataNode<T>>{
+        self.data.pop()
+    }
+}
+
+struct DataNode<T> {
+    key: String,
+    value: Option<T>
+}
+
+impl<T> DataNode<T> {
+    fn new(t_key: &str, t_value: Option<T>) -> DataNode<T>{
+        DataNode {
+            key: String::from(t_key),
+            value: Option::from(t_value)
+        }
+    }
+}
+
+
+
+
+
+#[cfg(test)]
+mod tests {
+    use super::Nodes;
+    use super::DataNode;
+    #[test]    
+    fn add_node_to_nodes() {
+        let mut n: Nodes<&str> = Nodes::new();
+        let d = DataNode::new("Key1", Option::from("Hello"));
+        n.add_node(d);
+        let dd = n.pop_node();
+        assert!(dd.is_some());
+        match dd {
+            Some(node) => match node.value {
+                Some(value) => {
+                    assert_eq!(node.key, "Key1");
+                    assert_eq!(value, "Hello")
+                },
+                None => {}
+            },
+            None => {}
+        }
+    }
+
+    #[test]
+    fn pop_empty_nodes(){
+        let mut n: Nodes<&str> = Nodes::new();
+        let dd = n.pop_node();
+        assert!(dd.is_none())
+    }
+    #[test]
+    fn nodes_is_empty(){
+        let mut n: Nodes<&str> = Nodes::new();
+        assert!(n.is_empty())
+    }
+}