github.com/linapex/ethereum-go-chinese@v0.0.0-20190316121929-f8b7a73c3fa1/trie/node_test.go (about)

     1  
     2  //<developer>
     3  //    <name>linapex 曹一峰</name>
     4  //    <email>linapex@163.com</email>
     5  //    <wx>superexc</wx>
     6  //    <qqgroup>128148617</qqgroup>
     7  //    <url>https://jsq.ink</url>
     8  //    <role>pku engineer</role>
     9  //    <date>2019-03-16 19:16:45</date>
    10  //</624450123107143680>
    11  
    12  
    13  package trie
    14  
    15  import "testing"
    16  
    17  func TestCanUnload(t *testing.T) {
    18  	tests := []struct {
    19  		flag                 nodeFlag
    20  		cachegen, cachelimit uint16
    21  		want                 bool
    22  	}{
    23  		{
    24  			flag: nodeFlag{dirty: true, gen: 0},
    25  			want: false,
    26  		},
    27  		{
    28  			flag:     nodeFlag{dirty: false, gen: 0},
    29  			cachegen: 0, cachelimit: 0,
    30  			want: true,
    31  		},
    32  		{
    33  			flag:     nodeFlag{dirty: false, gen: 65534},
    34  			cachegen: 65535, cachelimit: 1,
    35  			want: true,
    36  		},
    37  		{
    38  			flag:     nodeFlag{dirty: false, gen: 65534},
    39  			cachegen: 0, cachelimit: 1,
    40  			want: true,
    41  		},
    42  		{
    43  			flag:     nodeFlag{dirty: false, gen: 1},
    44  			cachegen: 65535, cachelimit: 1,
    45  			want: true,
    46  		},
    47  	}
    48  
    49  	for _, test := range tests {
    50  		if got := test.flag.canUnload(test.cachegen, test.cachelimit); got != test.want {
    51  			t.Errorf("%+v\n   got %t, want %t", test, got, test.want)
    52  		}
    53  	}
    54  }
    55