Skip to content

Commit

Permalink
EFeru#14 Add Immutable dbc class which uses dictionary while keeping …
Browse files Browse the repository at this point in the history
…old dbc class for backward compatibility
  • Loading branch information
Uight committed Aug 1, 2024
1 parent 102f422 commit f810594
Show file tree
Hide file tree
Showing 12 changed files with 165 additions and 128 deletions.
106 changes: 53 additions & 53 deletions DbcParserLib.Tests/DbcBuilderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,18 @@ namespace DbcParserLib.Tests
[TestFixture]
public class DbcBuilderTests
{
private MockRepository m_repository;
private MockRepository repository;

[SetUp]
public void Setup()
{
m_repository = new MockRepository(MockBehavior.Strict);
repository = new MockRepository(MockBehavior.Strict);
}

[TearDown]
public void Teardown()
{
m_repository.VerifyAll();
repository.VerifyAll();
}

[Test]
Expand Down Expand Up @@ -101,7 +101,7 @@ public void MessageIsAdded()
var builder = new DbcBuilder(new SilentFailureObserver());
var message = new Message { ID = 1};
builder.AddMessage(message);
var dbc = builder.Build();
var dbc = builder.BuildImmutable();

Assert.IsEmpty(dbc.Nodes);
Assert.AreEqual(1, dbc.Messages.Count());
Expand All @@ -115,7 +115,7 @@ public void ExtendedMessageIsAdded()
var builder = new DbcBuilder(new SilentFailureObserver());
var message = new Message { ID = 2147483649 };
builder.AddMessage(message);
var dbc = builder.Build();
var dbc = builder.BuildImmutable();

Assert.IsEmpty(dbc.Nodes);
Assert.AreEqual(1, dbc.Messages.Count());
Expand All @@ -130,7 +130,7 @@ public void CommentIsAddedToMessage()
var message = new Message { ID = 234 };
builder.AddMessage(message);
builder.AddMessageComment(234, "comment");
var dbc = builder.Build();
var dbc = builder.BuildImmutable();

Assert.IsEmpty(dbc.Nodes);
Assert.AreEqual(1, dbc.Messages.Count());
Expand All @@ -145,7 +145,7 @@ public void CommentIsNotAddedToMissingMessage()
var message = new Message { ID = 234 };
builder.AddMessage(message);
builder.AddMessageComment(235, "comment");
var dbc = builder.Build();
var dbc = builder.BuildImmutable();

Assert.IsEmpty(dbc.Nodes);
Assert.AreEqual(1, dbc.Messages.Count());
Expand All @@ -172,27 +172,27 @@ public void SignalIsAddedToCurrentMessage()
var signal3 = new Signal { Name = "name3" };
builder.AddSignal(signal3);

var dbc = builder.Build();
var dbc = builder.BuildImmutable();

Assert.IsEmpty(dbc.Nodes);
Assert.AreEqual(2, dbc.Messages.Count());

var messagesToArray = dbc.Messages.ToArray();
Assert.AreEqual(234, messagesToArray[0].Value.ID);
Assert.AreEqual(1, messagesToArray[0].Value.Signals.Count());
Assert.AreEqual("name1", messagesToArray[0].Value.Signals.First().Name);
Assert.AreEqual(1, messagesToArray[0].Value.Signals.Count);
Assert.AreEqual("name1", messagesToArray[0].Value.Signals.First().Value.Name);

Assert.AreEqual(235, messagesToArray[1].Value.ID);
Assert.AreEqual(2, messagesToArray[1].Value.Signals.Count());
Assert.AreEqual("name2", messagesToArray[1].Value.Signals.First().Name);
Assert.AreEqual("name3", messagesToArray[1].Value.Signals.Skip(1).First().Name);
Assert.AreEqual(2, messagesToArray[1].Value.Signals.Count);
Assert.AreEqual("name2", messagesToArray[1].Value.Signals.First().Value.Name);
Assert.AreEqual("name3", messagesToArray[1].Value.Signals.Skip(1).First().Value.Name);
}

[Test]
public void SignalIsNotAddedIfNoMessageHasBeenProvidedFirst()
{
var builder = new DbcBuilder(new SilentFailureObserver());
builder.AddSignal(new Signal { });
builder.AddSignal(new Signal());
var dbc = builder.Build();

Assert.IsEmpty(dbc.Nodes);
Expand All @@ -209,13 +209,13 @@ public void CommentIsAddedToSignal()
builder.AddSignal(signal);

builder.AddSignalComment(234, "name1", "comment");
var dbc = builder.Build();
var dbc = builder.BuildImmutable();

Assert.IsEmpty(dbc.Nodes);
Assert.AreEqual(1, dbc.Messages.Count());
Assert.AreEqual(234, dbc.Messages.First().Value.ID);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Name);
Assert.AreEqual("comment", dbc.Messages.First().Value.Signals.First().Comment);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Value.Name);
Assert.AreEqual("comment", dbc.Messages.First().Value.Signals.First().Value.Comment);
}

[Test]
Expand All @@ -228,13 +228,13 @@ public void CommentIsNotAddedToMissingSignalMessageId()
builder.AddSignal(signal);

builder.AddSignalComment(235, "name1", "comment");
var dbc = builder.Build();
var dbc = builder.BuildImmutable();

Assert.IsEmpty(dbc.Nodes);
Assert.AreEqual(1, dbc.Messages.Count());
Assert.AreEqual(234, dbc.Messages.First().Value.ID);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Name);
Assert.IsNull(dbc.Messages.First().Value.Signals.First().Comment);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Value.Name);
Assert.IsNull(dbc.Messages.First().Value.Signals.First().Value.Comment);
}

[Test]
Expand All @@ -247,13 +247,13 @@ public void CommentIsNotAddedToMissingSignalName()
builder.AddSignal(signal);

builder.AddSignalComment(234, "name2", "comment");
var dbc = builder.Build();
var dbc = builder.BuildImmutable();

Assert.IsEmpty(dbc.Nodes);
Assert.AreEqual(1, dbc.Messages.Count());
Assert.AreEqual(234, dbc.Messages.First().Value.ID);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Name);
Assert.IsNull(dbc.Messages.First().Value.Signals.First().Comment);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Value.Name);
Assert.IsNull(dbc.Messages.First().Value.Signals.First().Value.Comment);
}

[Test]
Expand All @@ -267,15 +267,15 @@ public void TableValuesAreAddedToSignal()
var testValuesDict = new Dictionary<int, string>() { { 1, "fake" } };

builder.LinkTableValuesToSignal(234, "name1", testValuesDict);
var dbc = builder.Build();
var dbc = builder.BuildImmutable();

Assert.IsEmpty(dbc.Nodes);
Assert.AreEqual(1, dbc.Messages.Count());
Assert.AreEqual(234, dbc.Messages.First().Value.ID);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Name);
Assert.AreEqual(testValuesDict, dbc.Messages.First().Value.Signals.First().ValueTableMap);
Assert.AreEqual(1, dbc.Messages.First().Value.Signals.First().ValueTableMap.Keys.First());
Assert.AreEqual("fake", dbc.Messages.First().Value.Signals.First().ValueTableMap.Values.First());
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Value.Name);
Assert.AreEqual(testValuesDict, dbc.Messages.First().Value.Signals.First().Value.ValueTableMap);
Assert.AreEqual(1, dbc.Messages.First().Value.Signals.First().Value.ValueTableMap.Keys.First());
Assert.AreEqual("fake", dbc.Messages.First().Value.Signals.First().Value.ValueTableMap.Values.First());
}

[Test]
Expand All @@ -289,15 +289,15 @@ public void TableValuesWithExtendedMessageIdAreAddedToSignal()
var testValuesDict = new Dictionary<int, string>() { { 1, "fake" } };

builder.LinkTableValuesToSignal(2566896411, "name1", testValuesDict);
var dbc = builder.Build();
var dbc = builder.BuildImmutable();

Assert.IsEmpty(dbc.Nodes);
Assert.AreEqual(1, dbc.Messages.Count());
Assert.AreEqual(message.ID, dbc.Messages.First().Value.ID);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Name);
Assert.AreEqual(testValuesDict, dbc.Messages.First().Value.Signals.First().ValueTableMap);
Assert.AreEqual(1, dbc.Messages.First().Value.Signals.First().ValueTableMap.Keys.First());
Assert.AreEqual("fake", dbc.Messages.First().Value.Signals.First().ValueTableMap.Values.First());
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Value.Name);
Assert.AreEqual(testValuesDict, dbc.Messages.First().Value.Signals.First().Value.ValueTableMap);
Assert.AreEqual(1, dbc.Messages.First().Value.Signals.First().Value.ValueTableMap.Keys.First());
Assert.AreEqual("fake", dbc.Messages.First().Value.Signals.First().Value.ValueTableMap.Values.First());
}

[Test]
Expand All @@ -311,13 +311,13 @@ public void TableValueIsNotAddedToMissingSignalMessageId()
var testValuesDict = new Dictionary<int, string>() { { 1, "fake" } };

builder.LinkTableValuesToSignal(235, "name1", testValuesDict);
var dbc = builder.Build();
var dbc = builder.BuildImmutable();

Assert.IsEmpty(dbc.Nodes);
Assert.AreEqual(1, dbc.Messages.Count());
Assert.AreEqual(234, dbc.Messages.First().Value.ID);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Name);
Assert.IsEmpty(dbc.Messages.First().Value.Signals.First().ValueTableMap);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Value.Name);
Assert.IsEmpty(dbc.Messages.First().Value.Signals.First().Value.ValueTableMap);
}

[Test]
Expand All @@ -331,13 +331,13 @@ public void TableValueIsNotAddedToMissingSignalName()
var testValuesDict = new Dictionary<int, string>() { { 1, "fake" } };

builder.LinkTableValuesToSignal(234, "name2", testValuesDict);
var dbc = builder.Build();
var dbc = builder.BuildImmutable();

Assert.IsEmpty(dbc.Nodes);
Assert.AreEqual(1, dbc.Messages.Count());
Assert.AreEqual(234, dbc.Messages.First().Value.ID);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Name);
Assert.IsEmpty(dbc.Messages.First().Value.Signals.First().ValueTableMap);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Value.Name);
Assert.IsEmpty(dbc.Messages.First().Value.Signals.First().Value.ValueTableMap);
}

[Test]
Expand All @@ -353,15 +353,15 @@ public void NamedTableValuesAreAddedToSignal()
builder.AddNamedValueTable("aTableName", testValuesDict);

builder.LinkNamedTableToSignal(234, "name1", "aTableName");
var dbc = builder.Build();
var dbc = builder.BuildImmutable();

Assert.IsEmpty(dbc.Nodes);
Assert.AreEqual(1, dbc.Messages.Count());
Assert.AreEqual(234, dbc.Messages.First().Value.ID);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Name);
Assert.AreEqual(testValuesDict, dbc.Messages.First().Value.Signals.First().ValueTableMap);
Assert.AreEqual(1, dbc.Messages.First().Value.Signals.First().ValueTableMap.Keys.First());
Assert.AreEqual("fake", dbc.Messages.First().Value.Signals.First().ValueTableMap.Values.First());
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Value.Name);
Assert.AreEqual(testValuesDict, dbc.Messages.First().Value.Signals.First().Value.ValueTableMap);
Assert.AreEqual(1, dbc.Messages.First().Value.Signals.First().Value.ValueTableMap.Keys.First());
Assert.AreEqual("fake", dbc.Messages.First().Value.Signals.First().Value.ValueTableMap.Values.First());
}

[Test]
Expand All @@ -377,13 +377,13 @@ public void NamedTableValueIsNotAddedToMissingSignalMessageId()
builder.AddNamedValueTable("aTableName", testValuesDict);

builder.LinkNamedTableToSignal(235, "name1", "aTableName");
var dbc = builder.Build();
var dbc = builder.BuildImmutable();

Assert.IsEmpty(dbc.Nodes);
Assert.AreEqual(1, dbc.Messages.Count());
Assert.AreEqual(234, dbc.Messages.First().Value.ID);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Name);
Assert.IsEmpty(dbc.Messages.First().Value.Signals.First().ValueTableMap);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Value.Name);
Assert.IsEmpty(dbc.Messages.First().Value.Signals.First().Value.ValueTableMap);
}

[Test]
Expand All @@ -399,13 +399,13 @@ public void NamedTableValueIsNotAddedToMissingSignalName()
builder.AddNamedValueTable("aTableName", testValuesDict);

builder.LinkNamedTableToSignal(234, "name2", "aTableName");
var dbc = builder.Build();
var dbc = builder.BuildImmutable();

Assert.IsEmpty(dbc.Nodes);
Assert.AreEqual(1, dbc.Messages.Count());
Assert.AreEqual(234, dbc.Messages.First().Value.ID);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Name);
Assert.IsEmpty(dbc.Messages.First().Value.Signals.First().ValueTableMap);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Value.Name);
Assert.IsEmpty(dbc.Messages.First().Value.Signals.First().Value.ValueTableMap);
}

[Test]
Expand All @@ -418,13 +418,13 @@ public void NamedTableValueIsNotAddedIfTableNameDoesNotExist()
builder.AddSignal(signal);

builder.LinkNamedTableToSignal(234, "name1", "aTableName");
var dbc = builder.Build();
var dbc = builder.BuildImmutable();

Assert.IsEmpty(dbc.Nodes);
Assert.AreEqual(1, dbc.Messages.Count());
Assert.AreEqual(234, dbc.Messages.First().Value.ID);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Name);
Assert.IsEmpty(dbc.Messages.First().Value.Signals.First().ValueTableMap);
Assert.AreEqual("name1", dbc.Messages.First().Value.Signals.First().Value.Name);
Assert.IsEmpty(dbc.Messages.First().Value.Signals.First().Value.ValueTableMap);
}

[Test]
Expand Down
Loading

0 comments on commit f810594

Please sign in to comment.