rust/landgen/src/wavefront_collapse/tile_image.rs
branchtransitional_engine
changeset 15917 60b5639cc3a5
parent 15916 e82de0410da5
child 15918 9bd828451d77
equal deleted inserted replaced
15916:e82de0410da5 15917:60b5639cc3a5
     1 use super::transform::RotationTransform;
     1 use super::transform::RotationTransform;
     2 use std::rc::Rc;
     2 use std::rc::Rc;
     3 use vec2d::Vec2D;
     3 use vec2d::Vec2D;
     4 
     4 
     5 #[derive(PartialEq, Clone)]
     5 #[derive(PartialEq, Clone, Debug)]
     6 pub struct Edge<I: PartialEq + Clone> {
     6 pub struct Edge<I: PartialEq + Clone> {
     7     id: I,
     7     id: I,
     8     symmetrical: bool,
     8     symmetrical: bool,
     9     reverse: bool,
     9     reverse: bool,
    10 }
    10 }
   107             right: self.top.clone(),
   107             right: self.top.clone(),
   108             bottom: self.right.clone(),
   108             bottom: self.right.clone(),
   109             left: self.bottom.clone(),
   109             left: self.bottom.clone(),
   110         }
   110         }
   111     }
   111     }
       
   112 
       
   113     pub fn right_edge(&self) -> &Edge<I> {
       
   114         &self.right
       
   115     }
       
   116 
       
   117     pub fn bottom_edge(&self) -> &Edge<I> {
       
   118         &self.bottom
       
   119     }
       
   120 
       
   121     pub fn left_edge(&self) -> &Edge<I> {
       
   122         &self.left
       
   123     }
       
   124 
       
   125     pub fn top_edge(&self) -> &Edge<I> {
       
   126         &self.top
       
   127     }
   112 }
   128 }
   113 
   129 
   114 #[cfg(test)]
   130 #[cfg(test)]
   115 mod tests {}
   131 mod tests {
       
   132     use super::*;
       
   133 
       
   134     #[test]
       
   135     fn test_edge_new() {
       
   136         let edge = Edge::new(1, true);
       
   137         assert_eq!(edge.id, 1);
       
   138         assert_eq!(edge.symmetrical, true);
       
   139         assert_eq!(edge.reverse, false);
       
   140     }
       
   141 
       
   142     #[test]
       
   143     fn test_edge_reversed() {
       
   144         let edge = Edge::new(1, true);
       
   145         let reversed = edge.reversed();
       
   146         assert_eq!(reversed.id, edge.id);
       
   147         assert_eq!(reversed.symmetrical, edge.symmetrical);
       
   148         assert_eq!(reversed.reverse, false);
       
   149 
       
   150         let edge = Edge::new(1, false);
       
   151         let reversed = edge.reversed();
       
   152         assert_eq!(reversed.id, edge.id);
       
   153         assert_eq!(reversed.symmetrical, edge.symmetrical);
       
   154         assert_eq!(reversed.reverse, true);
       
   155     }
       
   156 
       
   157     #[test]
       
   158     fn test_edge_equality() {
       
   159         let edge1 = Edge::new(1, true);
       
   160         let edge2 = Edge::new(1, true);
       
   161         assert_eq!(edge1, edge2);
       
   162 
       
   163         let edge1 = Edge::new(1, false);
       
   164         let edge2 = Edge::new(1, false);
       
   165         assert_eq!(edge1, edge2);
       
   166 
       
   167         let edge1 = Edge::new(1, false);
       
   168         let edge2 = Edge::new(2, false);
       
   169         assert_ne!(edge1, edge2);
       
   170     }
       
   171 
       
   172     #[test]
       
   173     fn test_edge_equality_with_reverse() {
       
   174         let edge1 = Edge::new(1, true);
       
   175         let edge2 = edge1.reversed();
       
   176         assert_eq!(edge1, edge2);
       
   177 
       
   178         let edge1 = Edge::new(1, false);
       
   179         let edge2 = edge1.reversed();
       
   180         assert_ne!(edge1, edge2);
       
   181 
       
   182         let edge1 = Edge::new(1, true);
       
   183         let edge2 = edge1.reversed().reversed();
       
   184         assert_eq!(edge1, edge2);
       
   185     }
       
   186 }