/// <exception cref="VPackException"/> public virtual void Seal() { if (this.builder == null) { return; } this.builder.Close(); VPackSlice slice = this.builder.Slice(); for (int i = 0; i < slice.GetLength(); i++) { VPackSlice key = slice.KeyAt(i); VPackSlice value = slice.ValueAt(i); this.attributeToKey[key.AsString] = value; this.keyToAttribute[value.AsInt] = key; } }
public void EmptyObject() { VPackBuilder builder = new VPackBuilder(); builder.Add(SliceType.Object); builder.Close(); VPackSlice slice = builder.Slice(); Assert.True(slice.IsType(SliceType.Object)); Assert.Equal(slice.Length, 0); VPackSlice a = slice["a"]; Assert.True(a.IsType(SliceType.None)); Assert.Throws <IndexOutOfRangeException>(() => slice.KeyAt(0)); Assert.Throws <IndexOutOfRangeException>(() => slice.ValueAt(0)); }
public void SortObjectAttr() { int min = 0; int max = 9; VPackBuilder builder = new VPackBuilder(); builder.Add(SliceType.Object); for (int i = max; i >= min; i--) { builder.Add(i.ToString(), "test"); } builder.Close(); VPackSlice vpack = builder.Slice(); Assert.True(vpack.IsType(SliceType.Object)); Assert.Equal(vpack.Length, max - min + 1); for (int i = min, j = 0; i <= max; i++, j++) { Assert.Equal(vpack.KeyAt(j).ToStringValue(), i.ToString()); } }
public void SortObjectAttr2() { string[] keys = { "a", "b", "c", "d", "e", "f", "g", "h" }; string[] keysUnsorted = { "b", "d", "c", "e", "g", "f", "h", "a" }; Assert.Equal(keysUnsorted.Length, keys.Length); VPackBuilder builder = new VPackBuilder(); builder.Add(SliceType.Object); for (int i = 0; i < keysUnsorted.Length; i++) { builder.Add(keysUnsorted[i].ToString(), "test"); } builder.Close(); VPackSlice vpack = builder.Slice(); Assert.True(vpack.IsType(SliceType.Object)); Assert.Equal(vpack.Length, keys.Length); for (int i = 0; i < keys.Length; i++) { Assert.Equal(vpack.KeyAt(i).ToStringValue(), keys[i].ToString()); } }