github.com/cihub/seelog@v0.0.0-20170130134532-f561c5e57575/common_constraints_test.go (about) 1 // Copyright (c) 2012 - Cloud Instruments Co., Ltd. 2 // 3 // All rights reserved. 4 // 5 // Redistribution and use in source and binary forms, with or without 6 // modification, are permitted provided that the following conditions are met: 7 // 8 // 1. Redistributions of source code must retain the above copyright notice, this 9 // list of conditions and the following disclaimer. 10 // 2. Redistributions in binary form must reproduce the above copyright notice, 11 // this list of conditions and the following disclaimer in the documentation 12 // and/or other materials provided with the distribution. 13 // 14 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 15 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 18 // ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 21 // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 23 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 25 package seelog 26 27 import ( 28 "testing" 29 ) 30 31 func TestInvalidminMaxConstraints(t *testing.T) { 32 constr, err := NewMinMaxConstraints(CriticalLvl, WarnLvl) 33 34 if err == nil || constr != nil { 35 t.Errorf("expected an error and a nil value for minmax constraints: min = %d, max = %d. Got: %v, %v", 36 CriticalLvl, WarnLvl, err, constr) 37 return 38 } 39 } 40 41 func TestInvalidLogLevels(t *testing.T) { 42 var invalidMin uint8 = 123 43 var invalidMax uint8 = 124 44 minMaxConstr, errMinMax := NewMinMaxConstraints(LogLevel(invalidMin), LogLevel(invalidMax)) 45 46 if errMinMax == nil || minMaxConstr != nil { 47 t.Errorf("expected an error and a nil value for minmax constraints: min = %d, max = %d. Got: %v, %v", 48 invalidMin, invalidMax, errMinMax, minMaxConstr) 49 return 50 } 51 52 invalidList := []LogLevel{145} 53 54 listConstr, errList := NewListConstraints(invalidList) 55 56 if errList == nil || listConstr != nil { 57 t.Errorf("expected an error and a nil value for constraints list: %v. Got: %v, %v", 58 invalidList, errList, listConstr) 59 return 60 } 61 } 62 63 func TestlistConstraintsWithDuplicates(t *testing.T) { 64 duplicateList := []LogLevel{TraceLvl, DebugLvl, InfoLvl, 65 WarnLvl, ErrorLvl, CriticalLvl, CriticalLvl, CriticalLvl} 66 67 listConstr, errList := NewListConstraints(duplicateList) 68 69 if errList != nil || listConstr == nil { 70 t.Errorf("expected a valid constraints list struct for: %v, got error: %v, value: %v", 71 duplicateList, errList, listConstr) 72 return 73 } 74 75 listLevels := listConstr.AllowedLevels() 76 77 if listLevels == nil { 78 t.Fatalf("listConstr.AllowedLevels() == nil") 79 return 80 } 81 82 if len(listLevels) != 6 { 83 t.Errorf("expected: listConstr.AllowedLevels() length == 6. Got: %d", len(listLevels)) 84 return 85 } 86 } 87 88 func TestlistConstraintsWithOffInList(t *testing.T) { 89 offList := []LogLevel{TraceLvl, DebugLvl, Off} 90 91 listConstr, errList := NewListConstraints(offList) 92 93 if errList == nil || listConstr != nil { 94 t.Errorf("expected an error and a nil value for constraints list with 'Off': %v. Got: %v, %v", 95 offList, errList, listConstr) 96 return 97 } 98 } 99 100 type logLevelTestCase struct { 101 level LogLevel 102 allowed bool 103 } 104 105 var minMaxTests = []logLevelTestCase{ 106 {TraceLvl, false}, 107 {DebugLvl, false}, 108 {InfoLvl, true}, 109 {WarnLvl, true}, 110 {ErrorLvl, false}, 111 {CriticalLvl, false}, 112 {123, false}, 113 {6, false}, 114 } 115 116 func TestValidminMaxConstraints(t *testing.T) { 117 118 constr, err := NewMinMaxConstraints(InfoLvl, WarnLvl) 119 120 if err != nil || constr == nil { 121 t.Errorf("expected a valid constraints struct for minmax constraints: min = %d, max = %d. Got: %v, %v", 122 InfoLvl, WarnLvl, err, constr) 123 return 124 } 125 126 for _, minMaxTest := range minMaxTests { 127 allowed := constr.IsAllowed(minMaxTest.level) 128 if allowed != minMaxTest.allowed { 129 t.Errorf("expected IsAllowed() = %t for level = %d. Got: %t", 130 minMaxTest.allowed, minMaxTest.level, allowed) 131 return 132 } 133 } 134 } 135 136 var listTests = []logLevelTestCase{ 137 {TraceLvl, true}, 138 {DebugLvl, false}, 139 {InfoLvl, true}, 140 {WarnLvl, true}, 141 {ErrorLvl, false}, 142 {CriticalLvl, true}, 143 {123, false}, 144 {6, false}, 145 } 146 147 func TestValidlistConstraints(t *testing.T) { 148 validList := []LogLevel{TraceLvl, InfoLvl, WarnLvl, CriticalLvl} 149 constr, err := NewListConstraints(validList) 150 151 if err != nil || constr == nil { 152 t.Errorf("expected a valid constraints list struct for: %v. Got error: %v, value: %v", 153 validList, err, constr) 154 return 155 } 156 157 for _, minMaxTest := range listTests { 158 allowed := constr.IsAllowed(minMaxTest.level) 159 if allowed != minMaxTest.allowed { 160 t.Errorf("expected IsAllowed() = %t for level = %d. Got: %t", 161 minMaxTest.allowed, minMaxTest.level, allowed) 162 return 163 } 164 } 165 } 166 167 var offTests = []logLevelTestCase{ 168 {TraceLvl, false}, 169 {DebugLvl, false}, 170 {InfoLvl, false}, 171 {WarnLvl, false}, 172 {ErrorLvl, false}, 173 {CriticalLvl, false}, 174 {123, false}, 175 {6, false}, 176 } 177 178 func TestValidListoffConstraints(t *testing.T) { 179 validList := []LogLevel{Off} 180 constr, err := NewListConstraints(validList) 181 182 if err != nil || constr == nil { 183 t.Errorf("expected a valid constraints list struct for: %v. Got error: %v, value: %v", 184 validList, err, constr) 185 return 186 } 187 188 for _, minMaxTest := range offTests { 189 allowed := constr.IsAllowed(minMaxTest.level) 190 if allowed != minMaxTest.allowed { 191 t.Errorf("expected IsAllowed() = %t for level = %d. Got: %t", 192 minMaxTest.allowed, minMaxTest.level, allowed) 193 return 194 } 195 } 196 }