node_test.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. package trie
  17. import "testing"
  18. func TestCanUnload(t *testing.T) {
  19. tests := []struct {
  20. flag nodeFlag
  21. cachegen, cachelimit uint16
  22. want bool
  23. }{
  24. {
  25. flag: nodeFlag{dirty: true, gen: 0},
  26. want: false,
  27. },
  28. {
  29. flag: nodeFlag{dirty: false, gen: 0},
  30. cachegen: 0, cachelimit: 0,
  31. want: true,
  32. },
  33. {
  34. flag: nodeFlag{dirty: false, gen: 65534},
  35. cachegen: 65535, cachelimit: 1,
  36. want: true,
  37. },
  38. {
  39. flag: nodeFlag{dirty: false, gen: 65534},
  40. cachegen: 0, cachelimit: 1,
  41. want: true,
  42. },
  43. {
  44. flag: nodeFlag{dirty: false, gen: 1},
  45. cachegen: 65535, cachelimit: 1,
  46. want: true,
  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. }