// TestStorage is a helper that can be used from unit tests to verify // the behavior of a Storage impl. //~ func TestStorage(t *testing.T, s Storage) { public static void TestStorage(IStorage s) { //~ keys, err := s.List("") //~ if err != nil { //~ t.Fatalf("list error: %s", err) //~ } //~ if len(keys) > 0 { //~ t.Fatalf("should have no keys to start: %#v", keys) //~ } var keys = s.List(""); Assert.AreEqual(0, keys.Count()); //~ entry := &StorageEntry{Key: "foo", Value: []byte("bar")} //~ if err := s.Put(entry); err != nil { //~ t.Fatalf("put error: %s", err) //~ } var entry = new StorageEntry { Key = "foo", Value = "bar".ToUtf8Bytes() }; s.Put(entry); //~ actual, err := s.Get("foo") //~ if err != nil { //~ t.Fatalf("get error: %s", err) //~ } //~ if !reflect.DeepEqual(actual, entry) { //~ t.Fatalf("wrong value. Expected: %#v\nGot: %#v", entry, actual) //~ } var actual = s.Get("foo"); var compare = new CompareLogic(); Assert.IsTrue(compare.Compare(entry, actual).AreEqual); //~ keys, err = s.List("") //~ if err != nil { //~ t.Fatalf("list error: %s", err) //~ } //~ if !reflect.DeepEqual(keys, []string{"foo"}) { //~ t.Fatalf("bad keys: %#v", keys) //~ } keys = s.List(""); CollectionAssert.AreEqual(keys.ToArray(), new string[] { "foo" }); //~ if err := s.Delete("foo"); err != nil { //~ t.Fatalf("put error: %s", err) //~ } s.Delete("foo"); //~ keys, err = s.List("") //~ if err != nil { //~ t.Fatalf("list error: %s", err) //~ } //~ if len(keys) > 0 { //~ t.Fatalf("should have no keys to start: %#v", keys) //~ } keys = s.List(""); Assert.AreEqual(0, keys.Count()); }
// logical.Storage impl. //~ func (v *BarrierView) Put(entry *logical.StorageEntry) error { public void Put(Logical.StorageEntry entry) { //~ if err := v.sanityCheck(entry.Key); err != nil { //~ return err //~ } sanityCheck(entry.Key); //~ expandedKey := v.expandKey(entry.Key) var expandedKey = expandKey(entry.Key); //~ if v.readonly { //~ return logical.ErrReadOnly //~ } if (readOnly) { throw new Logical.Globals.ErrReadOnly(); } //~ nested := &Entry{ //~ Key: expandedKey, //~ Value: entry.Value, //~ } //~ return v.barrier.Put(nested) var nested = new Entry { Key = expandedKey, Value = entry.Value, }; barrier.Put(nested); }
//~ func (s *InmemStorage) Put(entry *StorageEntry) error { public void Put(StorageEntry entry) { //~ s.once.Do(s.init) _once.Execute(Init); //~ physEntry := &physical.Entry{ //~ Key: entry.Key, //~ Value: entry.Value, //~ } //~ return s.phys.Put(physEntry) _phys.Put(new Physical.Entry { Key = entry.Key, Value = entry.Value, }); }