github.com/humaniq/go-ethereum@v1.6.8-0.20171225131628-061223a13848/trie/node_test.go (about)

     1  // Copyright 2016 The go-ethereum Authors
     2  // This file is part of the go-ethereum library.
     3  //
     4  // The go-ethereum library is free software: you can redistribute it and/or modify
     5  // it under the terms of the GNU Lesser General Public License as published by
     6  // the Free Software Foundation, either version 3 of the License, or
     7  // (at your option) any later version.
     8  //
     9  // The go-ethereum library is distributed in the hope that it will be useful,
    10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    12  // GNU Lesser General Public License for more details.
    13  //
    14  // You should have received a copy of the GNU Lesser General Public License
    15  // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
    16  
    17  package trie
    18  
    19  import "testing"
    20  
    21  func TestCanUnload(t *testing.T) {
    22  	tests := []struct {
    23  		flag                 nodeFlag
    24  		cachegen, cachelimit uint16
    25  		want                 bool
    26  	}{
    27  		{
    28  			flag: nodeFlag{dirty: true, gen: 0},
    29  			want: false,
    30  		},
    31  		{
    32  			flag:     nodeFlag{dirty: false, gen: 0},
    33  			cachegen: 0, cachelimit: 0,
    34  			want: true,
    35  		},
    36  		{
    37  			flag:     nodeFlag{dirty: false, gen: 65534},
    38  			cachegen: 65535, cachelimit: 1,
    39  			want: true,
    40  		},
    41  		{
    42  			flag:     nodeFlag{dirty: false, gen: 65534},
    43  			cachegen: 0, cachelimit: 1,
    44  			want: true,
    45  		},
    46  		{
    47  			flag:     nodeFlag{dirty: false, gen: 1},
    48  			cachegen: 65535, cachelimit: 1,
    49  			want: true,
    50  		},
    51  	}
    52  
    53  	for _, test := range tests {
    54  		if got := test.flag.canUnload(test.cachegen, test.cachelimit); got != test.want {
    55  			t.Errorf("%+v\n   got %t, want %t", test, got, test.want)
    56  		}
    57  	}
    58  }