Skip to content

Commit 6aea900

Browse files
authored
refactor: move all attribute tests to a dedicated module (#69)
1 parent a32d2bb commit 6aea900

File tree

4 files changed

+294
-297
lines changed

4 files changed

+294
-297
lines changed

honeycomb-core/src/attributes/collections.rs

Lines changed: 0 additions & 230 deletions
Original file line numberDiff line numberDiff line change
@@ -431,233 +431,3 @@ impl<T: AttributeBind + AttributeUpdate + Clone> AttrCompactVec<T> {
431431
+ self.data.len() * std::mem::size_of::<T>()
432432
}
433433
}
434-
435-
// ------ TESTS
436-
437-
#[cfg(test)]
438-
mod tests {
439-
use super::super::Temperature;
440-
use super::*;
441-
442-
macro_rules! generate_sparse {
443-
($name: ident) => {
444-
let mut $name = AttrSparseVec::<Temperature>::new(10);
445-
$name.insert(&0, Temperature::from(273.0));
446-
$name.insert(&1, Temperature::from(275.0));
447-
$name.insert(&2, Temperature::from(277.0));
448-
$name.insert(&3, Temperature::from(279.0));
449-
$name.insert(&4, Temperature::from(281.0));
450-
$name.insert(&5, Temperature::from(283.0));
451-
$name.insert(&6, Temperature::from(285.0));
452-
$name.insert(&7, Temperature::from(287.0));
453-
$name.insert(&8, Temperature::from(289.0));
454-
$name.insert(&9, Temperature::from(291.0));
455-
};
456-
}
457-
458-
#[test]
459-
fn sparse_vec_n_attributes() {
460-
generate_sparse!(storage);
461-
assert_eq!(storage.n_attributes(), 10);
462-
let _ = storage.remove(&3);
463-
assert_eq!(storage.n_attributes(), 9);
464-
// extend does not affect the number of attributes
465-
storage.extend(10);
466-
assert!(storage.get(&15).is_none());
467-
assert_eq!(storage.n_attributes(), 9);
468-
}
469-
470-
#[test]
471-
fn sparse_vec_get_set_get() {
472-
generate_sparse!(storage);
473-
assert_eq!(storage.get(&3), &Some(Temperature::from(279.0)));
474-
storage.set(&3, Temperature::from(280.0));
475-
assert_eq!(storage.get(&3), &Some(Temperature::from(280.0)));
476-
}
477-
478-
#[test]
479-
fn sparse_vec_get_replace_get() {
480-
generate_sparse!(storage);
481-
assert_eq!(storage.get(&3), &Some(Temperature::from(279.0)));
482-
storage.replace(&3, Temperature::from(280.0));
483-
assert_eq!(storage.get(&3), &Some(Temperature::from(280.0)));
484-
}
485-
486-
#[test]
487-
#[should_panic(expected = "assertion failed: tmp.is_none()")]
488-
fn sparse_vec_insert_already_existing() {
489-
generate_sparse!(storage);
490-
assert_eq!(storage.get(&3), &Some(Temperature::from(279.0)));
491-
storage.insert(&3, Temperature::from(280.0)); // panic
492-
}
493-
494-
#[test]
495-
fn sparse_vec_remove() {
496-
generate_sparse!(storage);
497-
assert_eq!(storage.remove(&3), Some(Temperature::from(279.0)));
498-
}
499-
500-
#[test]
501-
fn sparse_vec_remove_remove() {
502-
generate_sparse!(storage);
503-
assert_eq!(storage.remove(&3), Some(Temperature::from(279.0)));
504-
assert!(storage.remove(&3).is_none());
505-
}
506-
507-
#[test]
508-
fn sparse_vec_remove_get() {
509-
generate_sparse!(storage);
510-
assert_eq!(storage.remove(&3), Some(Temperature::from(279.0)));
511-
assert!(storage.get(&3).is_none());
512-
}
513-
514-
#[test]
515-
fn sparse_vec_remove_set() {
516-
generate_sparse!(storage);
517-
assert_eq!(storage.remove(&3), Some(Temperature::from(279.0)));
518-
storage.set(&3, Temperature::from(280.0));
519-
assert!(storage.get(&3).is_some());
520-
}
521-
522-
#[test]
523-
fn sparse_vec_remove_insert() {
524-
generate_sparse!(storage);
525-
assert_eq!(storage.remove(&3), Some(Temperature::from(279.0)));
526-
storage.insert(&3, Temperature::from(280.0));
527-
assert!(storage.get(&3).is_some());
528-
}
529-
530-
#[test]
531-
#[should_panic(expected = "called `Option::unwrap()` on a `None` value")]
532-
fn sparse_vec_replace_already_removed() {
533-
generate_sparse!(storage);
534-
assert_eq!(storage.remove(&3), Some(Temperature::from(279.0)));
535-
storage.replace(&3, Temperature::from(280.0)).unwrap(); // panic
536-
}
537-
538-
macro_rules! generate_compact {
539-
($name: ident) => {
540-
let mut $name = AttrCompactVec::<Temperature>::new(10);
541-
$name.insert(&0, Temperature::from(273.0));
542-
$name.insert(&1, Temperature::from(275.0));
543-
$name.insert(&2, Temperature::from(277.0));
544-
$name.insert(&3, Temperature::from(279.0));
545-
$name.insert(&4, Temperature::from(281.0));
546-
$name.insert(&5, Temperature::from(283.0));
547-
$name.insert(&6, Temperature::from(285.0));
548-
$name.insert(&7, Temperature::from(287.0));
549-
$name.insert(&8, Temperature::from(289.0));
550-
$name.insert(&9, Temperature::from(291.0));
551-
};
552-
}
553-
554-
#[test]
555-
fn compact_vec_n_attributes() {
556-
generate_compact!(storage);
557-
assert_eq!(storage.n_attributes(), 10);
558-
let _ = storage.remove(&3);
559-
assert_eq!(storage.n_attributes(), 10);
560-
// extend does not affect the number of attributes
561-
storage.extend(10);
562-
assert!(storage.get(&15).is_none());
563-
assert_eq!(storage.n_attributes(), 10);
564-
}
565-
566-
#[test]
567-
fn compact_vec_n_used_attributes() {
568-
generate_compact!(storage);
569-
assert_eq!(storage.n_used_attributes(), 10);
570-
let _ = storage.remove(&3);
571-
assert_eq!(storage.n_used_attributes(), 9);
572-
// extend does not affect the number of attributes
573-
storage.extend(10);
574-
assert!(storage.get(&15).is_none());
575-
assert_eq!(storage.n_used_attributes(), 9);
576-
}
577-
578-
#[test]
579-
fn compact_vec_extend_through_set() {
580-
generate_compact!(storage);
581-
assert_eq!(storage.n_attributes(), 10);
582-
// extend does not affect the number of attributes
583-
storage.extend(10);
584-
assert_eq!(storage.n_attributes(), 10);
585-
storage.set(&10, Temperature::from(293.0));
586-
assert_eq!(storage.n_attributes(), 11);
587-
storage.set(&11, Temperature::from(295.0));
588-
assert_eq!(storage.n_attributes(), 12);
589-
storage.set(&12, Temperature::from(297.0));
590-
assert_eq!(storage.n_attributes(), 13);
591-
let _ = storage.remove(&3);
592-
assert_eq!(storage.n_attributes(), 13);
593-
assert_eq!(storage.n_used_attributes(), 12);
594-
}
595-
596-
#[test]
597-
fn compact_vec_get_set_get() {
598-
generate_compact!(storage);
599-
assert_eq!(storage.get(&3), Some(&Temperature::from(279.0)));
600-
storage.set(&3, Temperature::from(280.0));
601-
assert_eq!(storage.get(&3), Some(&Temperature::from(280.0)));
602-
}
603-
604-
#[test]
605-
fn compact_vec_get_replace_get() {
606-
generate_compact!(storage);
607-
assert_eq!(storage.get(&3), Some(&Temperature::from(279.0)));
608-
storage.replace(&3, Temperature::from(280.0));
609-
assert_eq!(storage.get(&3), Some(&Temperature::from(280.0)));
610-
}
611-
612-
#[test]
613-
#[should_panic(expected = "assertion failed: idx.is_none()")]
614-
fn compact_vec_insert_already_existing() {
615-
generate_compact!(storage);
616-
assert_eq!(storage.get(&3), Some(&Temperature::from(279.0)));
617-
storage.insert(&3, Temperature::from(280.0)); // panic
618-
}
619-
620-
#[test]
621-
fn compact_vec_remove() {
622-
generate_compact!(storage);
623-
assert_eq!(storage.remove(&3), Some(Temperature::from(279.0)));
624-
}
625-
626-
#[test]
627-
fn compact_vec_remove_remove() {
628-
generate_compact!(storage);
629-
assert_eq!(storage.remove(&3), Some(Temperature::from(279.0)));
630-
assert!(storage.remove(&3).is_none());
631-
}
632-
633-
#[test]
634-
fn compact_vec_remove_get() {
635-
generate_compact!(storage);
636-
assert_eq!(storage.remove(&3), Some(Temperature::from(279.0)));
637-
assert!(storage.get(&3).is_none());
638-
}
639-
640-
#[test]
641-
fn compact_vec_remove_set() {
642-
generate_compact!(storage);
643-
assert_eq!(storage.remove(&3), Some(Temperature::from(279.0)));
644-
storage.set(&3, Temperature::from(280.0));
645-
assert!(storage.get(&3).is_some());
646-
}
647-
648-
#[test]
649-
fn compact_vec_remove_insert() {
650-
generate_compact!(storage);
651-
assert_eq!(storage.remove(&3), Some(Temperature::from(279.0)));
652-
storage.insert(&3, Temperature::from(280.0));
653-
assert!(storage.get(&3).is_some());
654-
}
655-
656-
#[test]
657-
#[should_panic(expected = "assertion failed: idx.is_some()")]
658-
fn compact_vec_replace_already_removed() {
659-
generate_compact!(storage);
660-
assert_eq!(storage.remove(&3), Some(Temperature::from(279.0)));
661-
storage.replace(&3, Temperature::from(280.0)); // panic
662-
}
663-
}

honeycomb-core/src/attributes/mod.rs

Lines changed: 1 addition & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -8,41 +8,5 @@ pub mod collections;
88
pub mod traits;
99

1010
// ------ TESTS
11-
12-
#[cfg(test)]
13-
#[derive(Clone, Copy, Debug, Default, PartialEq)]
14-
struct Temperature {
15-
pub val: f32,
16-
}
17-
18-
#[cfg(test)]
19-
impl crate::AttributeUpdate for Temperature {
20-
fn merge(attr1: Self, attr2: Self) -> Self {
21-
Temperature {
22-
val: (attr1.val + attr2.val) / 2.0,
23-
}
24-
}
25-
26-
fn split(attr: Self) -> (Self, Self) {
27-
(attr, attr)
28-
}
29-
30-
fn merge_undefined(attr: Option<Self>) -> Self {
31-
attr.unwrap_or(Temperature { val: 0.0 })
32-
}
33-
}
34-
35-
#[cfg(test)]
36-
impl crate::AttributeBind for Temperature {
37-
type IdentifierType = crate::FaceIdentifier;
38-
fn binds_to<'a>() -> crate::OrbitPolicy<'a> {
39-
crate::OrbitPolicy::Face
40-
}
41-
}
42-
4311
#[cfg(test)]
44-
impl From<f32> for Temperature {
45-
fn from(val: f32) -> Self {
46-
Self { val }
47-
}
48-
}
12+
mod tests;

0 commit comments

Comments
 (0)