Skip to content

Commit

Permalink
MOOOOOOR TESTS
Browse files Browse the repository at this point in the history
  • Loading branch information
patrick-dmxc committed Sep 25, 2024
1 parent f2cee92 commit 40311a6
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
2 changes: 1 addition & 1 deletion RDMSharp/Metadata/JSON/OneOfTypes/BitFieldType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ public override byte[] ParsePayloadToData(DataTree dataTree)
BitType bit = Bits.FirstOrDefault(b=>b.Name== bitDataTree.Name);
if (bit == null)
throw new ArithmeticException($"Can't find matching BitType {bitDataTree.Name}");
if (Bits[bitDataTree.Index] != bit)
if (Bits.Length <= bitDataTree.Index || Bits[bitDataTree.Index] != bit)
throw new ArithmeticException($"The given DataTree {nameof(bitDataTree.Index)}({bitDataTree.Index}) not match BitType {nameof(bit.Index)}({bit.Index})");
if (bitDataTree.Value is not bool value)
throw new ArithmeticException($"DataTree Value is not bool");
Expand Down
19 changes: 18 additions & 1 deletion RDMSharpTests/Metadata/JSON/TestBitFieldType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,24 @@ private void DoParseDataTest(BitFieldType bitFieldType, DataTree dataTree, byte[
Assert.That(parsedDataTree.Value, Is.Null);
Assert.That(parsedDataTree.Children, Is.Not.Null);
Assert.Throws(typeof(ArithmeticException), () => data = bitFieldType.ParsePayloadToData(new DataTree("Different Name", dataTree.Index, dataTree.Value)), message);
Assert.Throws(typeof(ArithmeticException), () => data = bitFieldType.ParsePayloadToData(new DataTree("Different Name", dataTree.Index, children: dataTree.Children)), message);
Assert.Throws(typeof(ArithmeticException), () => data = bitFieldType.ParsePayloadToData(new DataTree(dataTree.Name, dataTree.Index, children: dataTree.Children?.Take(2).ToArray())), message);
var children = dataTree.Children!.ToArray();
children[1] = new DataTree("Other Name", children[1].Index, children[1].Value);
Assert.Throws(typeof(ArithmeticException), () => data = bitFieldType.ParsePayloadToData(new DataTree(dataTree.Name, dataTree.Index, children: children)), message);
children = dataTree.Children!.ToArray();
children[1] = new DataTree(children[1].Name, 3, children[1].Value);
Assert.Throws(typeof(ArithmeticException), () => data = bitFieldType.ParsePayloadToData(new DataTree(dataTree.Name, dataTree.Index, children: children)), message);
children = dataTree.Children!.ToArray();
children[1] = new DataTree(children[1].Name, 0, children[1].Value);
Assert.Throws(typeof(ArithmeticException), () => data = bitFieldType.ParsePayloadToData(new DataTree(dataTree.Name, dataTree.Index, children: children)), message);
children = dataTree.Children!.ToArray();
children[1] = new DataTree(children[1].Name, children[1].Index, 3);
Assert.Throws(typeof(ArithmeticException), () => data = bitFieldType.ParsePayloadToData(new DataTree(dataTree.Name, dataTree.Index, children: children)), message);
});
}
}
Expand Down

0 comments on commit 40311a6

Please sign in to comment.