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  //}