@@ -1876,12 +1876,47 @@ func TestReferenceRoot(t *testing.T) {
18761876 _ , _ , err = tree .SaveVersion ()
18771877 require .NoError (t , err )
18781878
1879- // Load the tree from disk.
1879+ // load the tree from disk
18801880 tree = NewMutableTree (db , 0 , false , log .NewNopLogger ())
18811881 _ , err = tree .Load ()
18821882 require .NoError (t , err )
18831883 require .Equal (t , int64 (2 ), tree .Version ())
18841884 // check the root of version 2 is the leaf node of key2
18851885 require .Equal (t , tree .root .GetKey (), (& NodeKey {version : 1 , nonce : 3 }).GetKey ())
18861886 require .Equal (t , tree .root .key , []byte ("key2" ))
1887+
1888+ // test the reference root when pruning
1889+ db , err = dbm .NewDB ("test" , "memdb" , "" )
1890+ require .NoError (t , err )
1891+ tree = NewMutableTree (db , 0 , false , log .NewNopLogger ())
1892+
1893+ _ , err = tree .Set ([]byte ("key1" ), []byte ("value1" ))
1894+ require .NoError (t , err )
1895+
1896+ _ , _ , err = tree .SaveVersion ()
1897+ require .NoError (t , err )
1898+
1899+ _ , _ , err = tree .SaveVersion () // empty version
1900+ require .NoError (t , err )
1901+
1902+ require .NoError (t , tree .DeleteVersionsTo (1 ))
1903+ _ , _ , err = tree .SaveVersion () // empty version
1904+ require .NoError (t , err )
1905+
1906+ // load the tree from disk
1907+ tree = NewMutableTree (db , 0 , false , log .NewNopLogger ())
1908+ _ , err = tree .Load ()
1909+ require .NoError (t , err )
1910+
1911+ _ , err = tree .Set ([]byte ("key2" ), []byte ("value2" ))
1912+ require .NoError (t , err )
1913+ _ , _ , err = tree .SaveVersion ()
1914+ require .NoError (t , err )
1915+
1916+ // load the tree from disk to check if the reference root is loaded correctly
1917+ tree = NewMutableTree (db , 0 , false , log .NewNopLogger ())
1918+ _ , err = tree .Load ()
1919+ require .NoError (t , err )
1920+ _ , err = tree .Set ([]byte ("key1" ), []byte ("value2" ))
1921+ require .NoError (t , err )
18871922}
0 commit comments