use super::utils::types::Sha256Digest;
use super::rlp::{ RlpStream, Encodable };

pub struct CrosslinkRecord {
    pub epoch: u64,
    pub hash: Sha256Digest
}

impl CrosslinkRecord {
    pub fn new(epoch: u64, hash: Sha256Digest) -> CrosslinkRecord {
        CrosslinkRecord {
            epoch: epoch,
            hash: hash
        }
    }
}

/*
 * RLP Encoding
 */
impl Encodable for CrosslinkRecord {
    fn rlp_append(&self, s: &mut RlpStream) {
        s.append(&self.epoch);
        s.append(&self.hash);
    }
}

#[cfg(test)]
mod tests {
    use super::super::rlp;
    use super::*;

    #[test]
    fn test_new() {
        let epoch = 1;
        let hash = Sha256Digest::random();
        let c = CrosslinkRecord::new(epoch, hash);
        assert_eq!(c.epoch, epoch);
        assert_eq!(c.hash, hash);
    }

    #[test]
    fn test_serialization() {
        let c = CrosslinkRecord {
            epoch: 100,
            hash: Sha256Digest::zero()
        };
        let e = rlp::encode(&c);
        assert_eq!(e.len(), 34);
        assert_eq!(e[0], 100);
        assert_eq!(e[1], 160);
        assert_eq!(e[2..34], [0; 32]);
    }
}

use super::utils::types::Sha256Digest;

pub struct CrosslinkRecord {
    pub epoch: u64,
    pub hash: Sha256Digest
}

impl CrosslinkRecord {
    pub fn new(epoch: u64, hash: Sha256Digest) -> CrosslinkRecord {
        CrosslinkRecord {
            epoch: epoch,
            hash: hash
        }
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_new() {
        let epoch = 1;
        let hash = Sha256Digest::random();
        let c = CrosslinkRecord::new(epoch, hash);
        assert_eq!(c.epoch, epoch);
        assert_eq!(c.hash, hash);
    }
}

--- 
+++ 
@@ -1,4 +1,5 @@
 use super::utils::types::Sha256Digest;
+use super::rlp::{ RlpStream, Encodable };
 
 pub struct CrosslinkRecord {
     pub epoch: u64,
@@ -14,8 +15,19 @@
     }
 }
 
+/*
+ * RLP Encoding
+ */
+impl Encodable for CrosslinkRecord {
+    fn rlp_append(&self, s: &mut RlpStream) {
+        s.append(&self.epoch);
+        s.append(&self.hash);
+    }
+}
+
 #[cfg(test)]
 mod tests {
+    use super::super::rlp;
     use super::*;
 
     #[test]
@@ -26,4 +38,17 @@
         assert_eq!(c.epoch, epoch);
         assert_eq!(c.hash, hash);
     }
+
+    #[test]
+    fn test_serialization() {
+        let c = CrosslinkRecord {
+            epoch: 100,
+            hash: Sha256Digest::zero()
+        };
+        let e = rlp::encode(&c);
+        assert_eq!(e.len(), 34);
+        assert_eq!(e[0], 100);
+        assert_eq!(e[1], 160);
+        assert_eq!(e[2..34], [0; 32]);
+    }
 }
Add RLP encoding for CrosslinkRecord
