http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/CDataSectionNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/CDataSectionNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/CDataSectionNodeTest.java
new file mode 100644
index 0000000..118bdcc
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/CDataSectionNodeTest.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml;
+
+import org.apache.nifi.processors.evtx.parser.BxmlNodeVisitor;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+public class CDataSectionNodeTest extends BxmlNodeWithTokenTestBase {
+    private String content;
+    private CDataSectionNode cDataSectionNode;
+
+    @Override
+    public void setup() throws IOException {
+        super.setup();
+        content = "cdata content";
+        testBinaryReaderBuilder.putWord(content.length() + 2);
+        testBinaryReaderBuilder.putWString(content);
+        cDataSectionNode = new 
CDataSectionNode(testBinaryReaderBuilder.build(), chunkHeader, parent);
+    }
+
+    @Override
+    protected byte getToken() {
+        return BxmlNode.C_DATA_SECTION_TOKEN;
+    }
+
+    @Test
+    public void testInit() {
+        assertEquals(content, cDataSectionNode.getCdata());
+    }
+
+    @Test
+    public void testVisitor() throws IOException {
+        BxmlNodeVisitor mock = mock(BxmlNodeVisitor.class);
+        cDataSectionNode.accept(mock);
+        verify(mock).visit(cDataSectionNode);
+        verifyNoMoreInteractions(mock);
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/CloseElementNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/CloseElementNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/CloseElementNodeTest.java
new file mode 100644
index 0000000..f057ced
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/CloseElementNodeTest.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml;
+
+import org.apache.nifi.processors.evtx.parser.BxmlNodeVisitor;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+public class CloseElementNodeTest extends BxmlNodeWithTokenTestBase {
+    private CloseElementNode closeElementNode;
+
+    @Override
+    public void setup() throws IOException {
+        super.setup();
+        closeElementNode = new 
CloseElementNode(testBinaryReaderBuilder.build(), chunkHeader, parent);
+    }
+
+    @Override
+    protected byte getToken() {
+        return BxmlNode.CLOSE_ELEMENT_TOKEN;
+    }
+
+    @Test
+    public void testVisitor() throws IOException {
+        BxmlNodeVisitor mock = mock(BxmlNodeVisitor.class);
+        closeElementNode.accept(mock);
+        verify(mock).visit(closeElementNode);
+        verifyNoMoreInteractions(mock);
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/CloseEmptyElementNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/CloseEmptyElementNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/CloseEmptyElementNodeTest.java
new file mode 100644
index 0000000..c63d9f8
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/CloseEmptyElementNodeTest.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml;
+
+import org.apache.nifi.processors.evtx.parser.BxmlNodeVisitor;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+public class CloseEmptyElementNodeTest extends BxmlNodeWithTokenTestBase {
+    private CloseEmptyElementNode closeEmptyElementNode;
+
+    @Override
+    public void setup() throws IOException {
+        super.setup();
+        closeEmptyElementNode = new 
CloseEmptyElementNode(testBinaryReaderBuilder.build(), chunkHeader, parent);
+    }
+
+    @Override
+    protected byte getToken() {
+        return BxmlNode.CLOSE_EMPTY_ELEMENT_TOKEN;
+    }
+
+    @Test
+    public void testInit() {
+        assertEquals(BxmlNode.CLOSE_EMPTY_ELEMENT_TOKEN, 
closeEmptyElementNode.getToken());
+    }
+
+    @Test
+    public void testVisitor() throws IOException {
+        BxmlNodeVisitor mock = mock(BxmlNodeVisitor.class);
+        closeEmptyElementNode.accept(mock);
+        verify(mock).visit(closeEmptyElementNode);
+        verifyNoMoreInteractions(mock);
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/CloseStartElementNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/CloseStartElementNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/CloseStartElementNodeTest.java
new file mode 100644
index 0000000..c4338d7
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/CloseStartElementNodeTest.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml;
+
+import org.apache.nifi.processors.evtx.parser.BxmlNodeVisitor;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+public class CloseStartElementNodeTest extends BxmlNodeWithTokenTestBase {
+    private CloseStartElementNode closeStartElementNode;
+
+    @Override
+    public void setup() throws IOException {
+        super.setup();
+        closeStartElementNode = new 
CloseStartElementNode(testBinaryReaderBuilder.build(), chunkHeader, parent);
+    }
+
+    @Override
+    protected byte getToken() {
+        return BxmlNode.CLOSE_START_ELEMENT_TOKEN;
+    }
+
+    @Test
+    public void testInit() {
+        assertEquals(BxmlNode.CLOSE_START_ELEMENT_TOKEN, 
closeStartElementNode.getToken());
+    }
+
+    @Test
+    public void testVisitor() throws IOException {
+        BxmlNodeVisitor mock = mock(BxmlNodeVisitor.class);
+        closeStartElementNode.accept(mock);
+        verify(mock).visit(closeStartElementNode);
+        verifyNoMoreInteractions(mock);
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/ConditionalSubstitutionNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/ConditionalSubstitutionNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/ConditionalSubstitutionNodeTest.java
new file mode 100644
index 0000000..048242c
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/ConditionalSubstitutionNodeTest.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml;
+
+import org.apache.nifi.processors.evtx.parser.BxmlNodeVisitor;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+public class ConditionalSubstitutionNodeTest extends BxmlNodeWithTokenTestBase 
{
+    private ConditionalSubstitutionNode conditionalSubstitutionNode;
+    private int index;
+    private byte type;
+
+    @Override
+    public void setup() throws IOException {
+        super.setup();
+        index = 10;
+        type = 5;
+        testBinaryReaderBuilder.putWord(index);
+        testBinaryReaderBuilder.put(type);
+        conditionalSubstitutionNode = new 
ConditionalSubstitutionNode(testBinaryReaderBuilder.build(), chunkHeader, 
parent);
+    }
+
+    @Override
+    protected byte getToken() {
+        return BxmlNode.CONDITIONAL_SUBSTITUTION_TOKEN;
+    }
+
+    @Test
+    public void testInit() {
+        assertEquals(BxmlNode.CONDITIONAL_SUBSTITUTION_TOKEN, 
conditionalSubstitutionNode.getToken());
+        assertEquals(index, conditionalSubstitutionNode.getIndex());
+    }
+
+    @Test
+    public void testVisitor() throws IOException {
+        BxmlNodeVisitor mock = mock(BxmlNodeVisitor.class);
+        conditionalSubstitutionNode.accept(mock);
+        verify(mock).visit(conditionalSubstitutionNode);
+        verifyNoMoreInteractions(mock);
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/EndOfStreamNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/EndOfStreamNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/EndOfStreamNodeTest.java
new file mode 100644
index 0000000..5cd807e
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/EndOfStreamNodeTest.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml;
+
+import org.apache.nifi.processors.evtx.parser.BxmlNodeVisitor;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+public class EndOfStreamNodeTest extends BxmlNodeWithTokenTestBase {
+    private EndOfStreamNode endOfStreamNode;
+
+    @Override
+    public void setup() throws IOException {
+        super.setup();
+        endOfStreamNode = new EndOfStreamNode(testBinaryReaderBuilder.build(), 
chunkHeader, parent);
+    }
+
+    @Override
+    protected byte getToken() {
+        return BxmlNode.END_OF_STREAM_TOKEN;
+    }
+
+    @Test
+    public void testInit() {
+        assertEquals(BxmlNode.END_OF_STREAM_TOKEN, endOfStreamNode.getToken());
+    }
+
+    @Test
+    public void testVisitor() throws IOException {
+        BxmlNodeVisitor mock = mock(BxmlNodeVisitor.class);
+        endOfStreamNode.accept(mock);
+        verify(mock).visit(endOfStreamNode);
+        verifyNoMoreInteractions(mock);
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/EntityReferenceNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/EntityReferenceNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/EntityReferenceNodeTest.java
new file mode 100644
index 0000000..aafc4db
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/EntityReferenceNodeTest.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml;
+
+import org.apache.nifi.processors.evtx.parser.BxmlNodeVisitor;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+public class EntityReferenceNodeTest extends 
BxmlNodeWithTokenAndStringTestBase {
+    public static final String AMP = "amp";
+    private EntityReferenceNode entityReferenceNode;
+
+    @Override
+    public void setup() throws IOException {
+        super.setup();
+        entityReferenceNode = new 
EntityReferenceNode(testBinaryReaderBuilder.build(), chunkHeader, parent);
+    }
+
+    @Override
+    protected String getString() {
+        return AMP;
+    }
+
+    @Override
+    protected byte getToken() {
+        return BxmlNode.ENTITY_REFERENCE_TOKEN;
+    }
+
+    @Test
+    public void testInit() {
+        assertEquals(BxmlNode.ENTITY_REFERENCE_TOKEN, 
entityReferenceNode.getToken());
+    }
+
+    @Test
+    public void testGetValue() {
+        assertEquals("&" + AMP + ";", entityReferenceNode.getValue());
+    }
+
+    @Test
+    public void testVisitor() throws IOException {
+        BxmlNodeVisitor mock = mock(BxmlNodeVisitor.class);
+        entityReferenceNode.accept(mock);
+        verify(mock).visit(entityReferenceNode);
+        verifyNoMoreInteractions(mock);
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/NameStringNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/NameStringNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/NameStringNodeTest.java
new file mode 100644
index 0000000..233559f
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/NameStringNodeTest.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml;
+
+import com.google.common.primitives.UnsignedInteger;
+import org.apache.nifi.processors.evtx.parser.BxmlNodeVisitor;
+import org.apache.nifi.processors.evtx.parser.TestBinaryReaderBuilder;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+public class NameStringNodeTest extends BxmlNodeTestBase {
+    private int nextOffset = 300;
+    private int hash = 100;
+    private String string = "test string";
+    private NameStringNode nameStringNode;
+
+    public static int putNode(TestBinaryReaderBuilder testBinaryReaderBuilder, 
int nextOffset, int hash, String string) throws IOException {
+        testBinaryReaderBuilder.putDWord(nextOffset);
+        testBinaryReaderBuilder.putWord(hash);
+        testBinaryReaderBuilder.putWord(string.length());
+        testBinaryReaderBuilder.putWString(string);
+        return 8 + (2 * string.length());
+    }
+
+    @Override
+    public void setup() throws IOException {
+        super.setup();
+        putNode(testBinaryReaderBuilder, nextOffset, hash, string);
+        nameStringNode = new NameStringNode(testBinaryReaderBuilder.build(), 
chunkHeader);
+    }
+
+    @Test
+    public void testInit() {
+        assertEquals(UnsignedInteger.valueOf(nextOffset), 
nameStringNode.getNextOffset());
+        assertEquals(hash, nameStringNode.getHash());
+        assertEquals(string, nameStringNode.getString());
+    }
+
+    @Test
+    public void testVisitor() throws IOException {
+        BxmlNodeVisitor mock = mock(BxmlNodeVisitor.class);
+        nameStringNode.accept(mock);
+        verify(mock).visit(nameStringNode);
+        verifyNoMoreInteractions(mock);
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/NormalSubstitutionNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/NormalSubstitutionNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/NormalSubstitutionNodeTest.java
new file mode 100644
index 0000000..3f59485
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/NormalSubstitutionNodeTest.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml;
+
+import org.apache.nifi.processors.evtx.parser.BxmlNodeVisitor;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+public class NormalSubstitutionNodeTest extends BxmlNodeWithTokenTestBase {
+    private int index = 30;
+    private byte type = 20;
+    private NormalSubstitutionNode normalSubstitutionNode;
+
+    @Override
+    public void setup() throws IOException {
+        super.setup();
+        testBinaryReaderBuilder.putWord(index);
+        testBinaryReaderBuilder.put(type);
+        normalSubstitutionNode = new 
NormalSubstitutionNode(testBinaryReaderBuilder.build(), chunkHeader, parent);
+    }
+
+    @Override
+    protected byte getToken() {
+        return BxmlNode.NORMAL_SUBSTITUTION_TOKEN;
+    }
+
+    @Test
+    public void testInit() {
+        assertEquals(BxmlNode.NORMAL_SUBSTITUTION_TOKEN, 
normalSubstitutionNode.getToken());
+        assertEquals(index, normalSubstitutionNode.getIndex());
+    }
+
+    @Test
+    public void testVisitor() throws IOException {
+        BxmlNodeVisitor mock = mock(BxmlNodeVisitor.class);
+        normalSubstitutionNode.accept(mock);
+        verify(mock).visit(normalSubstitutionNode);
+        verifyNoMoreInteractions(mock);
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/OpenStartElementNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/OpenStartElementNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/OpenStartElementNodeTest.java
new file mode 100644
index 0000000..d4079ac
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/OpenStartElementNodeTest.java
@@ -0,0 +1,105 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml;
+
+import org.apache.nifi.processors.evtx.parser.BinaryReader;
+import org.apache.nifi.processors.evtx.parser.BxmlNodeVisitor;
+import org.apache.nifi.processors.evtx.parser.TestBinaryReaderBuilder;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
+
+public class OpenStartElementNodeTest extends BxmlNodeWithTokenTestBase {
+    private int unknown = 24;
+    private int size = 2444;
+    private int stringOffset = 0;
+    private String tagName = "tagName";
+    private OpenStartElementNode openStartElementNode;
+
+    @Override
+    public void setup() throws IOException {
+        super.setup();
+        testBinaryReaderBuilder.putWord(unknown);
+        testBinaryReaderBuilder.putDWord(size);
+        testBinaryReaderBuilder.putDWord(stringOffset);
+
+        testBinaryReaderBuilder.put((byte) BxmlNode.CLOSE_EMPTY_ELEMENT_TOKEN);
+        when(chunkHeader.getString(stringOffset)).thenReturn(tagName);
+        openStartElementNode = new 
OpenStartElementNode(testBinaryReaderBuilder.build(), chunkHeader, parent);
+    }
+
+    @Test
+    public void testInit() {
+        assertEquals(tagName, openStartElementNode.getTagName());
+        List<BxmlNode> children = openStartElementNode.getChildren();
+        assertEquals(1, children.size());
+        assertTrue(children.get(0) instanceof CloseEmptyElementNode);
+    }
+
+    @Test
+    public void testVisitor() throws IOException {
+        BxmlNodeVisitor mock = mock(BxmlNodeVisitor.class);
+        openStartElementNode.accept(mock);
+        verify(mock).visit(openStartElementNode);
+        verifyNoMoreInteractions(mock);
+    }
+
+    @Test
+    public void testWithFlagAndEmbeddedNameStringNode() throws IOException {
+        byte token = (byte) (0x04 << 4 | getToken());
+        stringOffset = 5;
+        tagName = "teststring";
+        testBinaryReaderBuilder = new TestBinaryReaderBuilder();
+        testBinaryReaderBuilder.put(token);
+        testBinaryReaderBuilder.putWord(unknown);
+        testBinaryReaderBuilder.putDWord(size);
+        testBinaryReaderBuilder.putDWord(stringOffset);
+
+        testBinaryReaderBuilder.putDWord(0);
+        testBinaryReaderBuilder.putWord(0);
+        testBinaryReaderBuilder.putWord(tagName.length());
+        testBinaryReaderBuilder.putWString(tagName);
+        testBinaryReaderBuilder.putWord(0);
+        testBinaryReaderBuilder.put(new byte[5]);
+
+        testBinaryReaderBuilder.put((byte) BxmlNode.CLOSE_EMPTY_ELEMENT_TOKEN);
+
+        BinaryReader binaryReader = testBinaryReaderBuilder.build();
+        NameStringNode nameStringNode = mock(NameStringNode.class);
+        when(nameStringNode.getString()).thenReturn(tagName);
+        when(chunkHeader.addNameStringNode(stringOffset, 
binaryReader)).thenAnswer(invocation -> new NameStringNode(binaryReader, 
chunkHeader));
+        openStartElementNode = new OpenStartElementNode(binaryReader, 
chunkHeader, parent);
+
+        assertEquals(getToken(), openStartElementNode.getToken() & 0x0F);
+        assertTrue((openStartElementNode.getFlags() & 0x04) > 0);
+        assertEquals(tagName, openStartElementNode.getTagName());
+    }
+
+    @Override
+    protected byte getToken() {
+        return BxmlNode.OPEN_START_ELEMENT_TOKEN;
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/ProcessingInstructionDataNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/ProcessingInstructionDataNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/ProcessingInstructionDataNodeTest.java
new file mode 100644
index 0000000..f84589d
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/ProcessingInstructionDataNodeTest.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml;
+
+import org.apache.nifi.processors.evtx.parser.BxmlNodeVisitor;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+public class ProcessingInstructionDataNodeTest extends 
BxmlNodeWithTokenTestBase {
+    private String data = "testData";
+    private ProcessingInstructionDataNode processingInstructionDataNode;
+
+    @Override
+    public void setup() throws IOException {
+        super.setup();
+        testBinaryReaderBuilder.putWord(data.length());
+        testBinaryReaderBuilder.putWString(data);
+        processingInstructionDataNode = new 
ProcessingInstructionDataNode(testBinaryReaderBuilder.build(), chunkHeader, 
parent);
+    }
+
+    @Test
+    public void testInit() {
+        assertEquals(getToken(), processingInstructionDataNode.getToken());
+        assertEquals(data + "?>", processingInstructionDataNode.getValue());
+    }
+
+    @Test
+    public void testVisitor() throws IOException {
+        BxmlNodeVisitor mock = mock(BxmlNodeVisitor.class);
+        processingInstructionDataNode.accept(mock);
+        verify(mock).visit(processingInstructionDataNode);
+        verifyNoMoreInteractions(mock);
+    }
+
+    @Test
+    public void testNoData() throws IOException {
+        super.setup();
+        testBinaryReaderBuilder.putDWord(0);
+        processingInstructionDataNode = new 
ProcessingInstructionDataNode(testBinaryReaderBuilder.build(), chunkHeader, 
parent);
+
+        assertEquals(getToken(), processingInstructionDataNode.getToken());
+        assertEquals("?>", processingInstructionDataNode.getValue());
+    }
+
+    @Override
+    protected byte getToken() {
+        return BxmlNode.PROCESSING_INSTRUCTION_DATA_TOKEN;
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/ProcessingInstructionTargetNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/ProcessingInstructionTargetNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/ProcessingInstructionTargetNodeTest.java
new file mode 100644
index 0000000..e33ac0e
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/ProcessingInstructionTargetNodeTest.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml;
+
+import org.apache.nifi.processors.evtx.parser.BxmlNodeVisitor;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+public class ProcessingInstructionTargetNodeTest extends 
BxmlNodeWithTokenAndStringTestBase {
+    private String instruction = "testInstruction";
+    private ProcessingInstructionTargetNode processingInstructionTargetNode;
+
+    @Override
+    public void setup() throws IOException {
+        super.setup();
+        processingInstructionTargetNode = new 
ProcessingInstructionTargetNode(testBinaryReaderBuilder.build(), chunkHeader, 
parent);
+    }
+
+    @Override
+    protected String getString() {
+        return instruction;
+    }
+
+    @Test
+    public void testInit() {
+        assertEquals(getToken(), processingInstructionTargetNode.getToken());
+        assertEquals("<?" + instruction, 
processingInstructionTargetNode.getValue());
+    }
+
+    @Test
+    public void testVisitor() throws IOException {
+        BxmlNodeVisitor mock = mock(BxmlNodeVisitor.class);
+        processingInstructionTargetNode.accept(mock);
+        verify(mock).visit(processingInstructionTargetNode);
+        verifyNoMoreInteractions(mock);
+    }
+
+    @Override
+    protected byte getToken() {
+        return BxmlNode.PROCESSING_INSTRUCTION_TARGET_TOKEN;
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/RootNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/RootNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/RootNodeTest.java
new file mode 100644
index 0000000..e14b9e2
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/RootNodeTest.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml;
+
+import org.apache.nifi.processors.evtx.parser.BxmlNodeVisitor;
+import org.apache.nifi.processors.evtx.parser.bxml.value.VariantTypeNode;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+public class RootNodeTest extends BxmlNodeTestBase {
+
+    private String testString = "testString";
+    private RootNode rootNode;
+
+    @Override
+    public void setup() throws IOException {
+        super.setup();
+        testBinaryReaderBuilder.put((byte) BxmlNode.END_OF_STREAM_TOKEN);
+        testBinaryReaderBuilder.putDWord(1);
+
+        testBinaryReaderBuilder.putWord(testString.length() + 1);
+        testBinaryReaderBuilder.putWord(2);
+        testBinaryReaderBuilder.putString(testString);
+        testBinaryReaderBuilder.put((byte) 0);
+
+        rootNode = new RootNode(testBinaryReaderBuilder.build(), chunkHeader, 
parent);
+    }
+
+    @Test
+    public void testInit() {
+        List<BxmlNode> children = rootNode.getChildren();
+        assertEquals(1, children.size());
+        assertTrue(children.get(0) instanceof EndOfStreamNode);
+
+        List<VariantTypeNode> substitutions = rootNode.getSubstitutions();
+        assertEquals(1, substitutions.size());
+        assertEquals(testString, substitutions.get(0).getValue());
+    }
+
+    @Test
+    public void testVisitor() throws IOException {
+        BxmlNodeVisitor mock = mock(BxmlNodeVisitor.class);
+        rootNode.accept(mock);
+        verify(mock).visit(rootNode);
+        verifyNoMoreInteractions(mock);
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/StreamStartNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/StreamStartNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/StreamStartNodeTest.java
new file mode 100644
index 0000000..a698f4b
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/StreamStartNodeTest.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml;
+
+import org.apache.nifi.processors.evtx.parser.BxmlNodeVisitor;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+public class StreamStartNodeTest extends BxmlNodeWithTokenTestBase {
+
+    private StreamStartNode streamStartNode;
+
+    @Override
+    public void setup() throws IOException {
+        super.setup();
+        testBinaryReaderBuilder.put((byte) 1);
+        testBinaryReaderBuilder.putWord(1);
+        streamStartNode = new StreamStartNode(testBinaryReaderBuilder.build(), 
chunkHeader, parent);
+    }
+
+    @Test
+    public void testInit() {
+        assertEquals(getToken(), streamStartNode.getToken());
+    }
+
+    @Test
+    public void testVisitor() throws IOException {
+        BxmlNodeVisitor mock = mock(BxmlNodeVisitor.class);
+        streamStartNode.accept(mock);
+        verify(mock).visit(streamStartNode);
+        verifyNoMoreInteractions(mock);
+    }
+
+    @Override
+    protected byte getToken() {
+        return BxmlNode.START_OF_STREAM_TOKEN;
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/TemplateInstanceNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/TemplateInstanceNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/TemplateInstanceNodeTest.java
new file mode 100644
index 0000000..28719cc
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/TemplateInstanceNodeTest.java
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml;
+
+import com.google.common.primitives.UnsignedInteger;
+import org.apache.nifi.processors.evtx.parser.BinaryReader;
+import org.apache.nifi.processors.evtx.parser.BxmlNodeVisitor;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
+
+public class TemplateInstanceNodeTest extends BxmlNodeWithTokenTestBase {
+    private byte unknown = 23;
+    private int templateId = 101;
+    private int templateLength = 25;
+    private TemplateNode templateNode;
+    private TemplateInstanceNode templateInstanceNode;
+
+    @Override
+    public void setup() throws IOException {
+        super.setup();
+        testBinaryReaderBuilder.put(unknown);
+        testBinaryReaderBuilder.putDWord(templateId);
+        testBinaryReaderBuilder.putDWord(0);
+        templateNode = mock(TemplateNode.class);
+        
when(templateNode.getTemplateId()).thenReturn(UnsignedInteger.valueOf(templateId));
+        when(chunkHeader.getTemplateNode(0)).thenReturn(templateNode);
+        templateInstanceNode = new 
TemplateInstanceNode(testBinaryReaderBuilder.build(), chunkHeader, parent);
+    }
+
+    @Test
+    public void testInit() {
+        assertEquals(getToken(), templateInstanceNode.getToken());
+        assertEquals(10, templateInstanceNode.getHeaderLength());
+        assertEquals(templateNode, templateInstanceNode.getTemplateNode());
+    }
+
+    @Test
+    public void testHasEndOfStream() {
+        when(templateNode.hasEndOfStream()).thenReturn(true).thenReturn(false);
+        assertTrue(templateInstanceNode.hasEndOfStream());
+        assertFalse(templateInstanceNode.hasEndOfStream());
+    }
+
+    @Test
+    public void testVisitor() throws IOException {
+        BxmlNodeVisitor mock = mock(BxmlNodeVisitor.class);
+        templateInstanceNode.accept(mock);
+        verify(mock).visit(templateInstanceNode);
+        verifyNoMoreInteractions(mock);
+    }
+
+    @Test
+    public void testResidentTemplate() throws IOException {
+        super.setup();
+        testBinaryReaderBuilder.put(unknown);
+        testBinaryReaderBuilder.putDWord(templateId);
+        testBinaryReaderBuilder.putDWord(5);
+
+        BinaryReader binaryReader = testBinaryReaderBuilder.build();
+        TemplateNode templateNode = mock(TemplateNode.class);
+        
when(templateNode.getTemplateId()).thenReturn(UnsignedInteger.valueOf(templateId));
+        when(templateNode.hasEndOfStream()).thenReturn(true).thenReturn(false);
+        when(chunkHeader.addTemplateNode(5, 
binaryReader)).thenAnswer(invocation -> {
+            binaryReader.skip(templateLength);
+            return templateNode;
+        });
+        templateInstanceNode = new TemplateInstanceNode(binaryReader, 
chunkHeader, parent);
+        assertEquals(templateLength, templateInstanceNode.getHeaderLength() - 
10);
+    }
+
+    @Override
+    protected byte getToken() {
+        return BxmlNode.TEMPLATE_INSTANCE_TOKEN;
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/TemplateNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/TemplateNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/TemplateNodeTest.java
new file mode 100644
index 0000000..87d5e34
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/TemplateNodeTest.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml;
+
+import com.google.common.primitives.UnsignedInteger;
+import org.apache.nifi.processors.evtx.parser.BxmlNodeVisitor;
+import org.apache.nifi.processors.evtx.parser.TestBinaryReaderBuilder;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+public class TemplateNodeTest extends BxmlNodeTestBase {
+
+    private int nextOffset = 101;
+    private String guid = "33323130-3534-3736-3839-616263646566";
+    private int dataLength = 102;
+    private TemplateNode templateNode;
+
+    public static int putNode(TestBinaryReaderBuilder testBinaryReaderBuilder, 
int nextOffset, String guid, int dataLength) {
+        testBinaryReaderBuilder.putDWord(nextOffset);
+        testBinaryReaderBuilder.putGuid(guid);
+        testBinaryReaderBuilder.putDWord(dataLength);
+        return 24;
+    }
+
+    @Override
+    public void setup() throws IOException {
+        super.setup();
+        putNode(testBinaryReaderBuilder, nextOffset, guid, dataLength);
+        testBinaryReaderBuilder.put((byte) BxmlNode.END_OF_STREAM_TOKEN);
+        templateNode = new TemplateNode(testBinaryReaderBuilder.build(), 
chunkHeader);
+    }
+
+    @Test
+    public void testInit() {
+        assertEquals(nextOffset, templateNode.getNextOffset());
+        assertEquals(UnsignedInteger.valueOf(858927408), 
templateNode.getTemplateId());
+        assertEquals(guid, templateNode.getGuid());
+        assertEquals(dataLength, templateNode.getDataLength());
+        assertTrue(templateNode.hasEndOfStream());
+    }
+
+    @Test
+    public void testVisitor() throws IOException {
+        BxmlNodeVisitor mock = mock(BxmlNodeVisitor.class);
+        templateNode.accept(mock);
+        verify(mock).visit(templateNode);
+        verifyNoMoreInteractions(mock);
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/ValueNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/ValueNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/ValueNodeTest.java
new file mode 100644
index 0000000..85b71ff
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/ValueNodeTest.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml;
+
+import org.apache.nifi.processors.evtx.parser.BxmlNodeVisitor;
+import org.apache.nifi.processors.evtx.parser.bxml.value.NullTypeNode;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+public class ValueNodeTest extends BxmlNodeWithTokenTestBase {
+    private ValueNode valueNode;
+
+    @Override
+    public void setup() throws IOException {
+        super.setup();
+        testBinaryReaderBuilder.put((byte) 0);
+        valueNode = new ValueNode(testBinaryReaderBuilder.build(), 
chunkHeader, parent);
+    }
+
+    @Override
+    protected byte getToken() {
+        return BxmlNode.VALUE_TOKEN;
+    }
+
+    @Test
+    public void testInit() {
+        assertEquals(getToken(), valueNode.getToken());
+        List<BxmlNode> children = valueNode.getChildren();
+        assertEquals(1, children.size());
+        assertTrue(children.get(0) instanceof NullTypeNode);
+    }
+
+    @Test
+    public void testVisitor() throws IOException {
+        BxmlNodeVisitor mock = mock(BxmlNodeVisitor.class);
+        valueNode.accept(mock);
+        verify(mock).visit(valueNode);
+        verifyNoMoreInteractions(mock);
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/BXmlTypeNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/BXmlTypeNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/BXmlTypeNodeTest.java
new file mode 100644
index 0000000..cf7e48a
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/BXmlTypeNodeTest.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml.value;
+
+import org.apache.nifi.processors.evtx.parser.bxml.BxmlNode;
+import org.apache.nifi.processors.evtx.parser.bxml.BxmlNodeTestBase;
+import org.apache.nifi.processors.evtx.parser.bxml.EndOfStreamNode;
+import org.apache.nifi.processors.evtx.parser.bxml.RootNode;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+public class BXmlTypeNodeTest extends BxmlNodeTestBase {
+    private BXmlTypeNode bXmlTypeNode;
+
+    @Override
+    public void setup() throws IOException {
+        super.setup();
+        testBinaryReaderBuilder.put((byte) BxmlNode.END_OF_STREAM_TOKEN);
+        testBinaryReaderBuilder.putDWord(0);
+        bXmlTypeNode = new BXmlTypeNode(testBinaryReaderBuilder.build(), 
chunkHeader, parent, -1);
+    }
+
+    @Test
+    public void testInit() {
+        RootNode rootNode = bXmlTypeNode.getRootNode();
+        List<BxmlNode> children = rootNode.getChildren();
+        assertEquals(1, children.size());
+        assertTrue(children.get(0) instanceof EndOfStreamNode);
+        assertEquals(0, rootNode.getSubstitutions().size());
+        assertEquals(rootNode.toString(), bXmlTypeNode.getValue());
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/BinaryTypeNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/BinaryTypeNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/BinaryTypeNodeTest.java
new file mode 100644
index 0000000..fd121a7
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/BinaryTypeNodeTest.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml.value;
+
+import com.google.common.base.Charsets;
+import com.google.common.primitives.UnsignedInteger;
+import org.apache.nifi.processors.evtx.parser.BinaryReader;
+import org.apache.nifi.processors.evtx.parser.bxml.BxmlNodeTestBase;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.Base64;
+
+import static org.junit.Assert.assertEquals;
+
+public class BinaryTypeNodeTest extends BxmlNodeTestBase {
+    @Test
+    public void testLength() throws IOException {
+        String val = "Test String";
+        BinaryReader binaryReader = 
testBinaryReaderBuilder.putDWord(val.length()).putString(val).build();
+        
assertEquals(Base64.getEncoder().encodeToString(val.getBytes(Charsets.US_ASCII)),
 new BinaryTypeNode(binaryReader, chunkHeader, parent, -1).getValue());
+    }
+
+    @Test(expected = IOException.class)
+    public void testInvalidStringLength() throws IOException {
+        String val = "Test String";
+        BinaryReader binaryReader = 
testBinaryReaderBuilder.putDWord(UnsignedInteger.fromIntBits(Integer.MAX_VALUE 
+ 1)).putString(val).build();
+        
assertEquals(Base64.getEncoder().encodeToString(val.getBytes(Charsets.US_ASCII)),
 new BinaryTypeNode(binaryReader, chunkHeader, parent, -1).getValue());
+    }
+
+    @Test
+    public void testNoLength() throws IOException {
+        String val = "Test String";
+        BinaryReader binaryReader = 
testBinaryReaderBuilder.putString(val).build();
+        
assertEquals(Base64.getEncoder().encodeToString(val.getBytes(Charsets.US_ASCII)),
 new BinaryTypeNode(binaryReader, chunkHeader, parent, 
val.length()).getValue());
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/BooleanTypeNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/BooleanTypeNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/BooleanTypeNodeTest.java
new file mode 100644
index 0000000..13a75aa
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/BooleanTypeNodeTest.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml.value;
+
+import org.apache.nifi.processors.evtx.parser.bxml.BxmlNodeTestBase;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+public class BooleanTypeNodeTest extends BxmlNodeTestBase {
+    @Test
+    public void testTrue() throws IOException {
+        assertTrue(Boolean.parseBoolean(new 
BooleanTypeNode(testBinaryReaderBuilder.putDWord(1).build(), chunkHeader, 
parent, -1).getValue()));
+    }
+
+    @Test
+    public void testFalse() throws IOException {
+        assertFalse(Boolean.parseBoolean(new 
BooleanTypeNode(testBinaryReaderBuilder.putDWord(-1).build(), chunkHeader, 
parent, -1).getValue()));
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/DoubleTypeNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/DoubleTypeNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/DoubleTypeNodeTest.java
new file mode 100644
index 0000000..4705367
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/DoubleTypeNodeTest.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml.value;
+
+import org.apache.nifi.processors.evtx.parser.bxml.BxmlNodeTestBase;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+public class DoubleTypeNodeTest extends BxmlNodeTestBase {
+    @Test
+    public void testDoubleTypeNode() throws IOException {
+        double value = 1.23456;
+        assertEquals(Double.toString(value), new 
DoubleTypeNode(testBinaryReaderBuilder.putQWord(Double.doubleToLongBits(value)).build(),
 chunkHeader, parent, -1).getValue());
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/FiletimeTypeNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/FiletimeTypeNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/FiletimeTypeNodeTest.java
new file mode 100644
index 0000000..d81c1b6
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/FiletimeTypeNodeTest.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml.value;
+
+import org.apache.nifi.processors.evtx.parser.bxml.BxmlNodeTestBase;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.Date;
+
+import static org.junit.Assert.assertEquals;
+
+public class FiletimeTypeNodeTest extends BxmlNodeTestBase {
+    @Test
+    public void testFiletimeTypeNode() throws IOException {
+        Date date = new Date();
+        assertEquals(FiletimeTypeNode.getFormat().format(date),
+                new 
FiletimeTypeNode(testBinaryReaderBuilder.putFileTime(date).build(), 
chunkHeader, parent, -1).getValue());
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/FloatTypeNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/FloatTypeNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/FloatTypeNodeTest.java
new file mode 100644
index 0000000..a4fe3db
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/FloatTypeNodeTest.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml.value;
+
+import org.apache.nifi.processors.evtx.parser.bxml.BxmlNodeTestBase;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+public class FloatTypeNodeTest extends BxmlNodeTestBase {
+    @Test
+    public void testFloatTypeNode() throws IOException {
+        float value = 5.432f;
+        assertEquals(Float.toString(value),
+                new 
FloatTypeNode(testBinaryReaderBuilder.putDWord(Float.floatToIntBits(value)).build(),
 chunkHeader, parent, -1).getValue());
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/GuidTypeNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/GuidTypeNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/GuidTypeNodeTest.java
new file mode 100644
index 0000000..f560869
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/GuidTypeNodeTest.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml.value;
+
+import org.apache.nifi.processors.evtx.parser.bxml.BxmlNodeTestBase;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+public class GuidTypeNodeTest extends BxmlNodeTestBase {
+    @Test
+    public void testGuidTypeNode() throws IOException {
+        String guid = "a1b2c3d4-e5f6-a7b8-c9da-ebf001121314";
+        assertEquals(guid, new 
GuidTypeNode(testBinaryReaderBuilder.putGuid(guid).build(), chunkHeader, 
parent, -1).getValue());
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/Hex32TypeNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/Hex32TypeNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/Hex32TypeNodeTest.java
new file mode 100644
index 0000000..b8ed300
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/Hex32TypeNodeTest.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml.value;
+
+import com.google.common.primitives.UnsignedInteger;
+import org.apache.nifi.processors.evtx.parser.bxml.BxmlNodeTestBase;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+public class Hex32TypeNodeTest extends BxmlNodeTestBase {
+    @Test
+    public void testHex32TypeNode() throws IOException {
+        UnsignedInteger value = UnsignedInteger.valueOf(1234);
+        String hex = value.toString(16);
+        assertEquals(hex, new 
Hex32TypeNode(testBinaryReaderBuilder.putDWord(value).build(), chunkHeader, 
parent, -1).getValue().substring(2));
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/Hex64TypeNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/Hex64TypeNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/Hex64TypeNodeTest.java
new file mode 100644
index 0000000..ecaa156
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/Hex64TypeNodeTest.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml.value;
+
+import com.google.common.primitives.UnsignedLong;
+import org.apache.nifi.processors.evtx.parser.bxml.BxmlNodeTestBase;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+public class Hex64TypeNodeTest extends BxmlNodeTestBase {
+    @Test
+    public void testHex64TypeNode() throws IOException {
+        UnsignedLong value = UnsignedLong.fromLongBits(Long.MAX_VALUE + 1234);
+        String hex = value.toString(16);
+        assertEquals(hex, new 
Hex64TypeNode(testBinaryReaderBuilder.putQWord(value).build(), chunkHeader, 
parent, -1).getValue().substring(2));
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/NullTypeNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/NullTypeNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/NullTypeNodeTest.java
new file mode 100644
index 0000000..99e7fb0
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/NullTypeNodeTest.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml.value;
+
+import org.apache.nifi.processors.evtx.parser.bxml.BxmlNodeTestBase;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+public class NullTypeNodeTest extends BxmlNodeTestBase {
+    @Test
+    public void testNullTypeNode() throws IOException {
+        assertEquals("", new NullTypeNode(testBinaryReaderBuilder.build(), 
chunkHeader, parent, -1).getValue());
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/SIDTypeNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/SIDTypeNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/SIDTypeNodeTest.java
new file mode 100644
index 0000000..a87fd39
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/SIDTypeNodeTest.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml.value;
+
+import org.apache.nifi.processors.evtx.parser.bxml.BxmlNodeTestBase;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+public class SIDTypeNodeTest extends BxmlNodeTestBase {
+    @Test
+    public void testSIDTypeNode() throws IOException {
+        testBinaryReaderBuilder.put((byte) 4);
+        testBinaryReaderBuilder.put((byte) 1);
+        testBinaryReaderBuilder.putDWordBE(5);
+        testBinaryReaderBuilder.putWordBE(6);
+        testBinaryReaderBuilder.putDWord(7);
+        assertEquals("S-4-327686-7", new 
SIDTypeNode(testBinaryReaderBuilder.build(), chunkHeader, parent, 
-1).getValue());
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/SignedByteTypeNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/SignedByteTypeNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/SignedByteTypeNodeTest.java
new file mode 100644
index 0000000..a19c64e
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/SignedByteTypeNodeTest.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml.value;
+
+import org.apache.nifi.processors.evtx.parser.bxml.BxmlNodeTestBase;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+public class SignedByteTypeNodeTest extends BxmlNodeTestBase {
+    @Test
+    public void testSignedByteTypeNode() throws IOException {
+        byte value = -25;
+        assertEquals(Byte.toString(value), new 
SignedByteTypeNode(testBinaryReaderBuilder.put(value).build(), chunkHeader, 
parent, -1).getValue());
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/SignedDWordTypeNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/SignedDWordTypeNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/SignedDWordTypeNodeTest.java
new file mode 100644
index 0000000..514145b
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/SignedDWordTypeNodeTest.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml.value;
+
+import org.apache.nifi.processors.evtx.parser.bxml.BxmlNodeTestBase;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+public class SignedDWordTypeNodeTest extends BxmlNodeTestBase {
+    @Test
+    public void testSignedDWordTypeNode() throws IOException {
+        int value = -5;
+        assertEquals(Integer.toString(value),
+                new 
SignedDWordTypeNode(testBinaryReaderBuilder.putDWord(value).build(), 
chunkHeader, parent, -1).getValue());
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/a5fecda5/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/SignedQWordTypeNodeTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/SignedQWordTypeNodeTest.java
 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/SignedQWordTypeNodeTest.java
new file mode 100644
index 0000000..a76baa6
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-evtx-bundle/nifi-evtx-processors/src/test/java/org/apache/nifi/processors/evtx/parser/bxml/value/SignedQWordTypeNodeTest.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.processors.evtx.parser.bxml.value;
+
+import org.apache.nifi.processors.evtx.parser.bxml.BxmlNodeTestBase;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+public class SignedQWordTypeNodeTest extends BxmlNodeTestBase {
+    @Test
+    public void testSignedQWordTypeNode() throws IOException {
+        long value = -5L;
+        assertEquals(Long.toString(value),
+                new 
SignedQWordTypeNode(testBinaryReaderBuilder.putQWord(value).build(), 
chunkHeader, parent, -1).getValue());
+    }
+}

Reply via email to