Browse Source

All tests passing for HashMap implementation

onyinyang 2 years ago
parent
commit
369d830bca
2 changed files with 10 additions and 16 deletions
  1. 3 13
      crates/lox-library/src/bridge_table.rs
  2. 7 3
      crates/lox-library/src/tests.rs

+ 3 - 13
crates/lox-library/src/bridge_table.rs

@@ -225,10 +225,9 @@ impl TryFrom<Vec<u8>> for EncryptedBucket {
     }
 }
 
-#[derive(Serialize, Deserialize)]
+#[derive(Debug, Serialize, Deserialize)]
 struct K {
     encbucket: EncryptedBucket,
-    vec: Vec<u8>,
 }
 
 
@@ -340,21 +339,14 @@ impl BridgeTable {
         encbucket: &EncryptedBucket,
     ) -> Result<Bucket, aead::Error> {
         // Set the nonce and the key
-        println!("Trying to decrypt");
         let k = K {
             encbucket: *encbucket,
-            vec: (0x20..0x30).collect(),
         };
-        println!("Made EncryptedBucket");
-        let nonce = GenericArray::from_slice(&k.vec[0..12]);
-        println!("got nonce: {:?}", nonce);
+        let nonce = GenericArray::from_slice(&k.encbucket.0[0..12]);
         let aeskey = GenericArray::from_slice(key);
-        println!("got aeskey: {:?}", aeskey);
         // Decrypt
         let cipher = Aes128Gcm::new(aeskey);
-        println!("got cipher");
-        let plaintext: Vec<u8> = cipher.decrypt(nonce,k.vec[12..].as_ref())?;
-        println!("got plaintext {:?}", plaintext);
+        let plaintext: Vec<u8> = cipher.decrypt(nonce,k.encbucket.0[12..].as_ref())?;
         // Convert the plaintext bytes to an array of BridgeLines
         Ok(BridgeLine::bucket_decode(
             plaintext.as_slice().try_into().unwrap(),
@@ -408,9 +400,7 @@ mod tests {
         btable.encrypt_table(today, &reachability_priv);
         // Try to decrypt a 1-bridge bucket
         let key7 = btable.keys[&7u32];
-        println!("Got Key");
         let bucket7 = btable.decrypt_bucket_id(7, &key7)?;
-        println!("Decrypted");
         println!("bucket 7 = {:?}", bucket7);
         // Try to decrypt a 3-bridge bucket
         let key24 = btable.keys[&24u32];

+ 7 - 3
crates/lox-library/src/tests.rs

@@ -727,7 +727,7 @@ fn test_update_bridge() {
 #[test]
 fn test_bridge_replace() {
     // Create 3 open invitation buckets and 3 spare buckets
-    let cases = vec!["not found", "available", "unallocated", "spare", "failed"];
+    let cases = vec!["not found", "available", "unallocated", "failed", "spare"];
     for case in cases {
         let mut th: TestHarness;
         if case != "failed" {
@@ -738,7 +738,10 @@ fn test_bridge_replace() {
 
         // Randomly select a bridge to replace
         let table_size = th.ba.bridge_table.buckets.len();
-        let num = rand::thread_rng().gen_range(0, table_size - 1) as u32;
+        let mut num = 100000;
+        while !th.ba.bridge_table.buckets.contains_key(&num) {
+            num = rand::thread_rng().gen_range(0, th.ba.bridge_table.counter) as u32;
+        };
         let replaceable_bucket = th.ba.bridge_table.buckets.get(&num).unwrap().clone();
         let replacement_bridge = &replaceable_bucket[0];
         assert!(
@@ -864,8 +867,9 @@ fn test_bridge_replace() {
                         .is_none(),
                     "Replacement bridge still marked as reachable"
                 );
+                // Remove a spare bucket to replace bridge, buckets decrease by 1
                 assert!(
-                    table_size == th.ba.bridge_table.buckets.len(),
+                (table_size -1) == th.ba.bridge_table.buckets.len(),
                     "Number of buckets changed size"
                 );
                 assert!(