예제 #1
0
        // 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());
        }
예제 #2
0
        // 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);
        }
예제 #3
0
 //~ 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,
     });
 }