github.com/wzzhu/tensor@v0.9.24/flags_test.go (about) 1 package tensor 2 3 import "testing" 4 5 func TestMemoryFlag(t *testing.T) { 6 var defaultFlag MemoryFlag 7 if defaultFlag.manuallyManaged() || !defaultFlag.nativelyAccessible() { 8 t.Errorf("Something went wrong with the creation of flags") 9 } 10 11 a := ManuallyManaged 12 if !a.manuallyManaged() { 13 t.Errorf("Expected ManuallyManaged to be true") 14 } 15 if !a.nativelyAccessible() { 16 t.Errorf("Expected ManuallyManaged to be nativelyAccessible") 17 } 18 19 b := NativelyInaccessible 20 if b.manuallyManaged() { 21 t.Errorf("Expected NativelyInaccessible to not be manually managed") 22 } 23 if b.nativelyAccessible() { 24 t.Errorf("Expected NativelyInaccessible to be false %v", b.nativelyAccessible()) 25 } 26 27 c := MakeMemoryFlag(ManuallyManaged, NativelyInaccessible) 28 if !c.manuallyManaged() { 29 t.Errorf("Expected c to be manually managed") 30 } 31 if c.nativelyAccessible() { 32 t.Errorf("Expected c to be natively inaccessible") 33 } 34 } 35 36 func TestDataOrder(t *testing.T) { 37 var defaultFlag DataOrder 38 if defaultFlag.IsColMajor() || defaultFlag.IsNotContiguous() || defaultFlag.IsTransposed() { 39 t.Error("Expected default flag to be row major and contiguous and not transposed") 40 } 41 if !(defaultFlag.IsRowMajor() && defaultFlag.IsContiguous()) { 42 t.Error("Expected default flag to be row major and contiguous") 43 } 44 if defaultFlag.String() != "Contiguous, RowMajor" { 45 t.Errorf("Expected string is \"Contiguous, RowMajor\". Got %q", defaultFlag.String()) 46 } 47 48 ncrm := MakeDataOrder(NonContiguous) 49 if ncrm.IsColMajor() || ncrm.IsContiguous() { 50 t.Error("Expected noncontiguous row major.") 51 } 52 if ncrm.String() != "NonContiguous, RowMajor" { 53 t.Errorf("Expected string is \"NonContiguous, RowMajor\". Got %q", defaultFlag.String()) 54 } 55 56 cm := ColMajor 57 if cm.IsRowMajor() { 58 t.Error("colMajor cannot be rowMajor") 59 } 60 if cm.IsNotContiguous() { 61 t.Error("ColMajor by default is contiguous") 62 } 63 if cm.String() != "Contiguous, ColMajor" { 64 t.Errorf(`Expected string is "Contiguous, ColMajor". Got %q`, cm.String()) 65 } 66 67 // check toggle 68 rm := cm.toggleColMajor() 69 if rm.IsColMajor() { 70 t.Errorf("toggled cm should be rm") 71 } 72 73 cm = rm.toggleColMajor() 74 if cm.IsRowMajor() { 75 t.Errorf("toggled rm should be cm") 76 } 77 78 transposed := MakeDataOrder(Transposed) 79 if !transposed.IsTransposed() { 80 t.Error("Expected transposed flag to be set") 81 } 82 if transposed.String() != "Contiguous, RowMajorᵀ" { 83 t.Errorf("Expected string is \"Contiguous, RowMajorᵀ\". Got %q", defaultFlag.String()) 84 } 85 untransposed := transposed.clearTransposed() 86 if untransposed != defaultFlag { 87 t.Error("Expected default flag after untransposing") 88 } 89 90 }