public void ReadToDescendantTest() { var reader = new NbtReader(TestFiles.MakeReaderTest()); Assert.IsTrue(reader.ReadToDescendant("third-comp")); Assert.AreEqual("third-comp", reader.TagName); Assert.IsTrue(reader.ReadToDescendant("inComp2")); Assert.AreEqual("inComp2", reader.TagName); Assert.IsFalse(reader.ReadToDescendant("derp")); Assert.AreEqual("inComp3", reader.TagName); reader.ReadToFollowing(); // at fourth-list Assert.IsTrue(reader.ReadToDescendant("inList2")); Assert.AreEqual("inList2", reader.TagName); // Read through the rest of the file until we run out of tags in a compound Assert.IsFalse(reader.ReadToDescendant("*")); // Ensure ReadToDescendant returns false when at end-of-stream while (reader.ReadToFollowing()) { } Assert.IsFalse(reader.ReadToDescendant("*")); // Ensure that this works even on the root Assert.IsFalse(new NbtReader(TestFiles.MakeReaderTest()).ReadToDescendant("*")); }
public void ReadToFollowingNotFound() { var reader = new NbtReader(TestFiles.MakeReaderTest()); Assert.IsTrue(reader.ReadToFollowing()); // at "root" Assert.IsFalse(reader.ReadToFollowing("no such tag")); Assert.IsFalse(reader.ReadToFollowing("not this one either")); Assert.IsTrue(reader.IsAtStreamEnd); }
public void NonSeekableStreamSkip2() { using (var ms = TestFiles.MakeReaderTest()) { using (var nss = new NonSeekableStream(ms)) { var reader = new NbtReader(nss); reader.ReadToFollowing(); reader.Skip(); } } }
public void ReadToSiblingTest2() { var reader = new NbtReader(TestFiles.MakeReaderTest()); Assert.IsTrue(reader.ReadToFollowing("inComp1")); // Expect all siblings to be read while we search for a non-existent one Assert.IsFalse(reader.ReadToNextSibling("no such tag")); // Expect to pop out of "third-comp" by now Assert.AreEqual("fourth-list", reader.TagName); }
public void ReadAsTagTest1() { // read various lists/compounds as tags var reader = new NbtReader(TestFiles.MakeReaderTest()); reader.ReadToFollowing(); // skip root while (!reader.IsAtStreamEnd) { reader.ReadAsTag(); } Assert.Throws <EndOfStreamException>(() => reader.ReadAsTag()); }
public void SkipTest() { var reader = new NbtReader(TestFiles.MakeReaderTest()); reader.ReadToFollowing(); // at root reader.ReadToFollowing(); // at first reader.ReadToFollowing(); // at second reader.ReadToFollowing(); // at third-comp reader.ReadToFollowing(); // at inComp1 Assert.AreEqual("inComp1", reader.TagName); Assert.AreEqual(2, reader.Skip()); Assert.AreEqual("fourth-list", reader.TagName); Assert.AreEqual(11, reader.Skip()); Assert.IsFalse(reader.ReadToFollowing()); Assert.AreEqual(0, reader.Skip()); }
public void ReadToDescendantTest() { var reader = new NbtReader(TestFiles.MakeReaderTest()); Assert.IsTrue(reader.ReadToDescendant("third-comp")); Assert.AreEqual("third-comp", reader.TagName); Assert.IsTrue(reader.ReadToDescendant("inComp2")); Assert.AreEqual("inComp2", reader.TagName); Assert.IsFalse(reader.ReadToDescendant("derp")); Assert.AreEqual("inComp3", reader.TagName); reader.ReadToFollowing(); // at fourth-list Assert.IsTrue(reader.ReadToDescendant("inList2")); Assert.AreEqual("inList2", reader.TagName); // Ensure ReadToDescendant returns false when at end-of-stream while (reader.ReadToFollowing()) { } Assert.IsFalse(reader.ReadToDescendant("*")); }
public void ReadToSiblingTest() { var reader = new NbtReader(TestFiles.MakeReaderTest()); Assert.IsTrue(reader.ReadToFollowing()); Assert.AreEqual("root", reader.TagName); Assert.IsTrue(reader.ReadToFollowing()); Assert.AreEqual("first", reader.TagName); Assert.IsTrue(reader.ReadToNextSibling("third-comp")); Assert.AreEqual("third-comp", reader.TagName); Assert.IsTrue(reader.ReadToNextSibling()); Assert.AreEqual("fourth-list", reader.TagName); Assert.IsTrue(reader.ReadToNextSibling()); Assert.AreEqual("fifth", reader.TagName); Assert.IsTrue(reader.ReadToNextSibling()); Assert.AreEqual("hugeArray", reader.TagName); Assert.IsFalse(reader.ReadToNextSibling()); // Test twice, since we hit different paths through the code Assert.IsFalse(reader.ReadToNextSibling()); }
public void PropertiesTest() { var reader = new NbtReader(TestFiles.MakeReaderTest()); Assert.AreEqual(0, reader.Depth); Assert.AreEqual(0, reader.TagsRead); Assert.IsTrue(reader.ReadToFollowing()); Assert.AreEqual("root", reader.TagName); Assert.AreEqual(NbtTagType.Compound, reader.TagType); Assert.AreEqual(NbtTagType.Unknown, reader.ListType); Assert.IsFalse(reader.HasValue); Assert.IsTrue(reader.IsCompound); Assert.IsFalse(reader.IsList); Assert.IsFalse(reader.IsListElement); Assert.IsFalse(reader.HasLength); Assert.AreEqual(0, reader.ListIndex); Assert.AreEqual(1, reader.Depth); Assert.AreEqual(null, reader.ParentName); Assert.AreEqual(NbtTagType.Unknown, reader.ParentTagType); Assert.AreEqual(0, reader.ParentTagLength); Assert.AreEqual(0, reader.TagLength); Assert.AreEqual(1, reader.TagsRead); Assert.IsTrue(reader.ReadToFollowing()); Assert.AreEqual("first", reader.TagName); Assert.AreEqual(NbtTagType.Int, reader.TagType); Assert.AreEqual(NbtTagType.Unknown, reader.ListType); Assert.IsTrue(reader.HasValue); Assert.IsFalse(reader.IsCompound); Assert.IsFalse(reader.IsList); Assert.IsFalse(reader.IsListElement); Assert.IsFalse(reader.HasLength); Assert.AreEqual(0, reader.ListIndex); Assert.AreEqual(2, reader.Depth); Assert.AreEqual("root", reader.ParentName); Assert.AreEqual(NbtTagType.Compound, reader.ParentTagType); Assert.AreEqual(0, reader.ParentTagLength); Assert.AreEqual(0, reader.TagLength); Assert.AreEqual(2, reader.TagsRead); Assert.IsTrue(reader.ReadToFollowing("fourth-list")); Assert.AreEqual("fourth-list", reader.TagName); Assert.AreEqual(NbtTagType.List, reader.TagType); Assert.AreEqual(NbtTagType.List, reader.ListType); Assert.IsFalse(reader.HasValue); Assert.IsFalse(reader.IsCompound); Assert.IsTrue(reader.IsList); Assert.IsFalse(reader.IsListElement); Assert.IsTrue(reader.HasLength); Assert.AreEqual(0, reader.ListIndex); Assert.AreEqual(2, reader.Depth); Assert.AreEqual("root", reader.ParentName); Assert.AreEqual(NbtTagType.Compound, reader.ParentTagType); Assert.AreEqual(0, reader.ParentTagLength); Assert.AreEqual(3, reader.TagLength); Assert.AreEqual(8, reader.TagsRead); Assert.IsTrue(reader.ReadToFollowing()); // first list element, itself a list Assert.AreEqual(null, reader.TagName); Assert.AreEqual(NbtTagType.List, reader.TagType); Assert.AreEqual(NbtTagType.Compound, reader.ListType); Assert.IsFalse(reader.HasValue); Assert.IsFalse(reader.IsCompound); Assert.IsTrue(reader.IsList); Assert.IsTrue(reader.IsListElement); Assert.IsTrue(reader.HasLength); Assert.AreEqual(0, reader.ListIndex); Assert.AreEqual(3, reader.Depth); Assert.AreEqual("fourth-list", reader.ParentName); Assert.AreEqual(NbtTagType.List, reader.ParentTagType); Assert.AreEqual(3, reader.ParentTagLength); Assert.AreEqual(1, reader.TagLength); Assert.AreEqual(9, reader.TagsRead); Assert.IsTrue(reader.ReadToFollowing()); // first nested list element, compound Assert.AreEqual(null, reader.TagName); Assert.AreEqual(NbtTagType.Compound, reader.TagType); Assert.AreEqual(NbtTagType.Unknown, reader.ListType); Assert.IsFalse(reader.HasValue); Assert.IsTrue(reader.IsCompound); Assert.IsFalse(reader.IsList); Assert.IsTrue(reader.IsListElement); Assert.IsFalse(reader.HasLength); Assert.AreEqual(0, reader.ListIndex); Assert.AreEqual(4, reader.Depth); Assert.AreEqual(null, reader.ParentName); Assert.AreEqual(NbtTagType.List, reader.ParentTagType); Assert.AreEqual(1, reader.ParentTagLength); Assert.AreEqual(0, reader.TagLength); Assert.AreEqual(10, reader.TagsRead); Assert.IsTrue(reader.ReadToFollowing("fifth")); Assert.AreEqual("fifth", reader.TagName); Assert.AreEqual(NbtTagType.Int, reader.TagType); Assert.AreEqual(NbtTagType.Unknown, reader.ListType); Assert.IsTrue(reader.HasValue); Assert.IsFalse(reader.IsCompound); Assert.IsFalse(reader.IsList); Assert.IsFalse(reader.IsListElement); Assert.IsFalse(reader.HasLength); Assert.AreEqual(0, reader.ListIndex); Assert.AreEqual(2, reader.Depth); Assert.AreEqual("root", reader.ParentName); Assert.AreEqual(NbtTagType.Compound, reader.ParentTagType); Assert.AreEqual(0, reader.ParentTagLength); Assert.AreEqual(0, reader.TagLength); Assert.AreEqual(18, reader.TagsRead); Assert.IsTrue(reader.ReadToFollowing()); Assert.AreEqual("hugeArray", reader.TagName); Assert.AreEqual(NbtTagType.ByteArray, reader.TagType); Assert.AreEqual(NbtTagType.Unknown, reader.ListType); Assert.IsTrue(reader.HasValue); Assert.IsFalse(reader.IsCompound); Assert.IsFalse(reader.IsList); Assert.IsFalse(reader.IsListElement); Assert.IsTrue(reader.HasLength); Assert.AreEqual(0, reader.ListIndex); Assert.AreEqual(2, reader.Depth); Assert.AreEqual("root", reader.ParentName); Assert.AreEqual(NbtTagType.Compound, reader.ParentTagType); Assert.AreEqual(0, reader.ParentTagLength); Assert.AreEqual(1024 * 1024, reader.TagLength); Assert.AreEqual(19, reader.TagsRead); }