github.com/jmigpin/editor@v1.6.0/util/uiutil/widget/startpercentlayout_test.go (about) 1 package widget 2 3 //// TODO: test insertion that push rows below and if there is not space it should push rows above 4 5 //import ( 6 // "image" 7 // "math" 8 // "testing" 9 //) 10 11 //func TestStartPercentLayout1(t *testing.T) { 12 // r1 := NewRectangle(nil) 13 // r2 := NewRectangle(nil) 14 // r3 := NewRectangle(nil) 15 16 // l1 := NewStartPercentLayout() 17 18 // logNodes := func() { 19 // logSPNodes(t, l1) 20 // } 21 // tpv := func(v []float64) { 22 // t.Helper() 23 // testSPNodes(t, l1, v) 24 // } 25 26 // l1.Append(r1, r2, r3) 27 // logNodes() 28 // tpv([]float64{0.0, 0.5, 0.75}) 29 30 // l1.Remove(r2) 31 // tpv([]float64{0.0, 0.75}) 32 33 // l1.InsertBefore(r2, r3) 34 // tpv([]float64{0.0, 0.375, 0.75}) 35 36 // l1.Remove(r3) 37 // tpv([]float64{0.0, 0.375}) 38 39 // l1.Remove(r1) 40 // tpv([]float64{0.375}) 41 //} 42 43 //func TestStartPercentLayout2(t *testing.T) { 44 // r1 := NewRectangle(nil) 45 // r2 := NewRectangle(nil) 46 // r3 := NewRectangle(nil) 47 48 // l1 := NewStartPercentLayout() 49 50 // logNodes := func() { 51 // logSPNodes(t, l1) 52 // } 53 // tpv := func(v []float64) { 54 // t.Helper() 55 // testSPNodes(t, l1, v) 56 // } 57 58 // l1.Append(r1, r2, r3) 59 // logNodes() 60 // tpv([]float64{0.0, 0.5, 0.75}) 61 62 // l1.Remove(r1) 63 // tpv([]float64{0.5, 0.75}) 64 //} 65 66 //func TestStartPercentLayout3(t *testing.T) { 67 // r1 := NewRectangle(nil) 68 // r2 := NewRectangle(nil) 69 // r3 := NewRectangle(nil) 70 // r4 := NewRectangle(nil) 71 72 // l1 := NewStartPercentLayout() 73 // l1.minp = 0.05 74 75 // logNodes := func() { 76 // t.Helper() 77 // logSPNodes(t, l1) 78 // } 79 // tpv := func(v []float64) { 80 // t.Helper() 81 // testSPNodes(t, l1, v) 82 // } 83 84 // l1.Append(r1, r2, r3) 85 // tpv([]float64{0.0, 0.5, 0.75}) 86 87 // // insert before first, becomes second 88 // logNodes() 89 // l1.InsertBefore(r4, r1) 90 // tpv([]float64{0.0, 0.25, 0.5, 0.75}) 91 92 // // insert before first with small space (smaller then min), insert at first 93 // l1.Remove(r4) 94 // l1.Resize(r1, 0.1) 95 // l1.InsertBefore(r4, r1) 96 // tpv([]float64{0.0, 0.1, 0.5, 0.75}) 97 //} 98 99 //func TestStartPercentLayoutResize1(t *testing.T) { 100 // r1 := NewRectangle(nil) 101 // r2 := NewRectangle(nil) 102 // r3 := NewRectangle(nil) 103 104 // l1 := NewStartPercentLayout() 105 // l1.minp = 0.05 106 107 // logNodes := func() { 108 // t.Helper() 109 // logSPNodes(t, l1) 110 // } 111 // tpv := func(v []float64) { 112 // t.Helper() 113 // testSPNodes(t, l1, v) 114 // } 115 116 // l1.Append(r1, r2, r3) 117 // logNodes() 118 119 // l1.Resize(r1, 0.90) 120 // tpv([]float64{0.45, 0.5, 0.75}) 121 122 // l1.Resize(r1, 0.20) 123 // l1.Resize(r2, 0.10) 124 // tpv([]float64{0.20, 0.25, 0.75}) 125 126 // l1.Resize(r1, 0.0) 127 // tpv([]float64{0.0, 0.25, 0.75}) 128 //} 129 130 //func TestStartPercentLayoutResizeWithPush1(t *testing.T) { 131 // r1 := NewRectangle(nil) 132 // r2 := NewRectangle(nil) 133 // r3 := NewRectangle(nil) 134 135 // l1 := NewStartPercentLayout() 136 // l1.minp = 0.05 137 138 // logNodes := func() { 139 // t.Helper() 140 // logSPNodes(t, l1) 141 // } 142 // tpv := func(v []float64) { 143 // t.Helper() 144 // testSPNodes(t, l1, v) 145 // } 146 147 // l1.Append(r1, r2, r3) 148 // logNodes() 149 // l1.ResizeWithPush(r1, 0.80) 150 // tpv([]float64{0.8, 0.85, 0.90}) 151 152 // l1.ResizeWithPush(r1, 0.90) 153 // tpv([]float64{0.85, 0.90, 0.95}) 154 155 // l1.ResizeWithPush(r3, 0.5) 156 // tpv([]float64{0.4, 0.45, 0.5}) 157 158 // l1.ResizeWithPush(r2, 0.07) 159 // tpv([]float64{0.02, 0.07, 0.5}) 160 161 // l1.ResizeWithPush(r2, 0.4) 162 // tpv([]float64{0.02, 0.40, 0.5}) 163 //} 164 165 //func TestStartPercentLayoutResizeWithPush2(t *testing.T) { 166 // r1 := NewRectangle(nil) 167 // r2 := NewRectangle(nil) 168 // r3 := NewRectangle(nil) 169 // r4 := NewRectangle(nil) 170 171 // l1 := NewStartPercentLayout() 172 // l1.minp = 0.05 173 174 // logNodes := func() { 175 // t.Helper() 176 // logSPNodes(t, l1) 177 // } 178 // tpv := func(v []float64) { 179 // t.Helper() 180 // testSPNodes(t, l1, v) 181 // } 182 183 // l1.Append(r1, r2, r3, r4) 184 // l1.Resize(r3, 0.81) 185 // l1.Resize(r2, 0.75) 186 // l1.Resize(r1, 0.5) 187 // logNodes() 188 // l1.ResizeWithPush(r3, 0.5) 189 // tpv([]float64{0.4, 0.45, 0.5, 0.875}) 190 //} 191 192 //func TestStartPercentLayoutResizeWithMove1(t *testing.T) { 193 // r1 := NewRectangle(nil) 194 // r2 := NewRectangle(nil) 195 // r3 := NewRectangle(nil) 196 // r4 := NewRectangle(nil) 197 // r5 := NewRectangle(nil) 198 199 // l1 := NewStartPercentLayout() 200 // l1.minp = 0.05 201 202 // logNodes := func() { 203 // t.Helper() 204 // logSPNodes(t, l1) 205 // } 206 // tpv := func(v []float64) { 207 // t.Helper() 208 // testSPNodes(t, l1, v) 209 // } 210 211 // l1.Append(r1, r2, r3, r4, r5) 212 // logNodes() 213 // l1.ResizeWithMove(r1, 0.81) 214 // tpv([]float64{0.5, 0.75, 0.81, 0.875, 0.9375}) 215 216 // logNodes() 217 // l1.ResizeWithPush(r1, 0.5) 218 // tpv([]float64{0.4, 0.45, 0.5, 0.875, 0.9375}) 219 220 // l1.ResizeWithPush(r2, 0.5) 221 // tpv([]float64{0.5, 0.55, 0.6, 0.875, 0.9375}) 222 223 // l1.ResizeWithMove(r1, 0.3) 224 // tpv([]float64{0.3, 0.5, 0.55, 0.875, 0.9375}) 225 //} 226 227 //func TestStartPercentLayoutResizeWithMove2(t *testing.T) { 228 // r1 := NewRectangle(nil) 229 // r2 := NewRectangle(nil) 230 // r3 := NewRectangle(nil) 231 // r4 := NewRectangle(nil) 232 // r5 := NewRectangle(nil) 233 234 // l1 := NewStartPercentLayout() 235 // l1.minp = 0.05 236 237 // logNodes := func() { 238 // t.Helper() 239 // logSPNodes(t, l1) 240 // } 241 // tpv := func(v []float64) { 242 // t.Helper() 243 // testSPNodes(t, l1, v) 244 // } 245 246 // l1.Append(r1, r2, r3, r4, r5) 247 // logNodes() 248 // l1.ResizeWithMove(r2, 0.0) 249 // tpv([]float64{0.0, 0.05, 0.75, 0.875, 0.9375}) 250 //} 251 252 //func TestStartPercentLayoutBounds1(t *testing.T) { 253 // r1 := NewRectangle(nil) 254 // r2 := NewRectangle(nil) 255 // r3 := NewRectangle(nil) 256 // r4 := NewRectangle(nil) 257 // r5 := NewRectangle(nil) 258 259 // l1 := NewStartPercentLayout() 260 261 // logNodes := func() { 262 // t.Helper() 263 // logSPNodes(t, l1) 264 // } 265 266 // r := image.Rect(0, 0, 100, 100) 267 // l1.Bounds = r 268 // l1.Append(r1, r2, r3, r4) 269 // logNodes() 270 // l1.setsp(r1, 0.10) 271 // l1.setsp(r3, 0.80) 272 // logNodes() 273 // l1.CalcChildsBounds() 274 // if r4.Bounds != image.Rect(87, 0, 100, 100) { 275 // t.Log(r4.Bounds) 276 // t.Fatal() 277 // } 278 279 // l1.Append(r5) 280 // l1.CalcChildsBounds() 281 // if !(r4.Bounds == image.Rect(87, 0, 93, 100) && r5.Bounds == image.Rect(93, 0, 100, 100)) { 282 // t.Log(r4.Bounds, r5.Bounds) 283 // t.Fatal() 284 // } 285 //} 286 287 //func logSPNodes(t *testing.T, sp *StartPercentLayout) { 288 // t.Helper() 289 // u := []float64{} 290 // sp.IterChilds(func(c Node) { 291 // u = append(u, sp.spm[c]) 292 // }) 293 // t.Log(u) 294 //} 295 296 //func testSPNodes(t *testing.T, sp *StartPercentLayout, values []float64) { 297 // t.Helper() 298 // fail := false 299 // i := 0 300 // if len(values) != sp.ChildsLen() { 301 // fail = true 302 // } else { 303 // sp.IterChilds(func(c Node) { 304 // if !testPercentValue(sp, c, values[i]) { 305 // fail = true 306 // } 307 // i++ 308 // }) 309 // } 310 // // fail outside of iterchilds to get correct source line on error (not helper func) 311 // if fail { 312 // logSPNodes(t, sp) 313 // t.Fatal() 314 // } 315 //} 316 317 //func testPercentValue(l *StartPercentLayout, n Node, v float64) bool { 318 // return feq(l.spm[n], v) 319 //} 320 321 //var eps = 0.00000001 322 323 //func feq(a, b float64) bool { 324 // if math.Abs(a-b) < eps { 325 // return true 326 // } 327 // return false 328 //}