github.com/linapex/ethereum-go-chinese@v0.0.0-20190316121929-f8b7a73c3fa1/swarm/shed/field_string_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:44</date>
    10  //</624450117658742784>
    11  
    12  
    13  package shed
    14  
    15  import (
    16  	"testing"
    17  
    18  	"github.com/syndtr/goleveldb/leveldb"
    19  )
    20  
    21  //TestStringField验证Put和Get操作
    22  //在StringField中。
    23  func TestStringField(t *testing.T) {
    24  	db, cleanupFunc := newTestDB(t)
    25  	defer cleanupFunc()
    26  
    27  	simpleString, err := db.NewStringField("simple-string")
    28  	if err != nil {
    29  		t.Fatal(err)
    30  	}
    31  
    32  	t.Run("get empty", func(t *testing.T) {
    33  		got, err := simpleString.Get()
    34  		if err != nil {
    35  			t.Fatal(err)
    36  		}
    37  		want := ""
    38  		if got != want {
    39  			t.Errorf("got string %q, want %q", got, want)
    40  		}
    41  	})
    42  
    43  	t.Run("put", func(t *testing.T) {
    44  		want := "simple string value"
    45  		err = simpleString.Put(want)
    46  		if err != nil {
    47  			t.Fatal(err)
    48  		}
    49  		got, err := simpleString.Get()
    50  		if err != nil {
    51  			t.Fatal(err)
    52  		}
    53  		if got != want {
    54  			t.Errorf("got string %q, want %q", got, want)
    55  		}
    56  
    57  		t.Run("overwrite", func(t *testing.T) {
    58  			want := "overwritten string value"
    59  			err = simpleString.Put(want)
    60  			if err != nil {
    61  				t.Fatal(err)
    62  			}
    63  			got, err := simpleString.Get()
    64  			if err != nil {
    65  				t.Fatal(err)
    66  			}
    67  			if got != want {
    68  				t.Errorf("got string %q, want %q", got, want)
    69  			}
    70  		})
    71  	})
    72  
    73  	t.Run("put in batch", func(t *testing.T) {
    74  		batch := new(leveldb.Batch)
    75  		want := "simple string batch value"
    76  		simpleString.PutInBatch(batch, want)
    77  		err = db.WriteBatch(batch)
    78  		if err != nil {
    79  			t.Fatal(err)
    80  		}
    81  		got, err := simpleString.Get()
    82  		if err != nil {
    83  			t.Fatal(err)
    84  		}
    85  		if got != want {
    86  			t.Errorf("got string %q, want %q", got, want)
    87  		}
    88  
    89  		t.Run("overwrite", func(t *testing.T) {
    90  			batch := new(leveldb.Batch)
    91  			want := "overwritten string batch value"
    92  			simpleString.PutInBatch(batch, want)
    93  			err = db.WriteBatch(batch)
    94  			if err != nil {
    95  				t.Fatal(err)
    96  			}
    97  			got, err := simpleString.Get()
    98  			if err != nil {
    99  				t.Fatal(err)
   100  			}
   101  			if got != want {
   102  				t.Errorf("got string %q, want %q", got, want)
   103  			}
   104  		})
   105  	})
   106  }
   107