Skip to content

Commit

Permalink
#23 Parsing failures management (#42)
Browse files Browse the repository at this point in the history
* #23 Parsing failures management

Added observer to listen for parsing failures. Code clean up.

* #23 Added parsing failures management for each line parser

Added parsing failures management for each line parser.
Created silent and simple failure observer classes

* #23 Added parsing failure tests

Added parsing failure tests. Removed old and no more valid tests

* #23 Added parsing failure observer in Demo application

* #41 EnumCustomProperty parsing fails if more than one white-space character is used as separator. Updated and added some test

EnumCustomProperty parsing fails if more than one white-space chracter is used as separator. Updated and added some test, code clean up.

* #42 Bugfixed on NS definition

Now every NS definition at the top of a file is ignored
  • Loading branch information
Whitehouse112 authored Sep 11, 2023
1 parent b0f8ffb commit 6fcf801
Show file tree
Hide file tree
Showing 35 changed files with 1,280 additions and 271 deletions.
20 changes: 19 additions & 1 deletion DbcParserLib.Tests/CommentLineParserTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using DbcParserLib.Parsers;
using Moq;
using System.Collections.Generic;
using DbcParserLib.Observers;

namespace DbcParserLib.Tests
{
Expand All @@ -24,7 +25,7 @@ public void Teardown()

private static ILineParser CreateParser()
{
return new CommentLineParser();
return new CommentLineParser(new SilentFailureObserver());
}

[Test]
Expand Down Expand Up @@ -248,6 +249,23 @@ public void AnotherMalformedLineIsAcceptedWithoutInteraction()

Assert.IsTrue(commentLineParser.TryParse(@"CM_ BU_ xxx no quotes;", dbcBuilderMock.Object, nextLineProviderMock.Object));
}

[TestCase("CM_ SG_ 865 \"Test with incorrect \"syntax\"\";")]
[TestCase("CM_ BU_ NodeName \"Test with incorrect \"syntax\"\";")]
[TestCase("CM_ BO_ 865 \"Test with incorrect \"syntax\"\";")]
[TestCase("CM_ EV_ VarName \"Test with incorrect \"syntax\"\";")]
[TestCase("CM_ \"Test with incorrect \"syntax\"\";")]
public void CommentSyntaxErrorIsObserved(string commentLine)
{
var observerMock = m_repository.Create<IParseFailureObserver>();
var dbcBuilderMock = m_repository.Create<IDbcBuilder>();
var nextLineProviderMock = m_repository.Create<INextLineProvider>();

observerMock.Setup(o => o.CommentSyntaxError());

var commentParser = new CommentLineParser(observerMock.Object);
commentParser.TryParse(commentLine, dbcBuilderMock.Object, nextLineProviderMock.Object);
}
}

internal class ArrayBasedLineProvider : INextLineProvider
Expand Down
74 changes: 25 additions & 49 deletions DbcParserLib.Tests/DbcBuilderTests.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.Linq;
using DbcParserLib.Model;
using DbcParserLib.Observers;
using Moq;
using NUnit.Framework;

Expand All @@ -26,7 +27,7 @@ public void Teardown()
[Test]
public void NoInteractionProduceAnEmptyDbc()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var dbc = builder.Build();

Assert.IsEmpty(dbc.Nodes);
Expand All @@ -36,7 +37,7 @@ public void NoInteractionProduceAnEmptyDbc()
[Test]
public void SingleNodeIsAdded()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var node = new Node { Name = "nodeName" };
builder.AddNode(node);

Expand All @@ -49,7 +50,7 @@ public void SingleNodeIsAdded()
[Test]
public void DuplicatedNodesAreSkipped()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var node = new Node { Name = "nodeName" };
var node2 = new Node { Name = "nodeName2" };
var node3 = new Node { Name = "nodeName" };
Expand All @@ -67,7 +68,7 @@ public void DuplicatedNodesAreSkipped()
[Test]
public void NodeCommentIsAddedToNode()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var node = new Node { Name = "nodeName" };
builder.AddNode(node);
builder.AddNodeComment("nodeName", "this is a comment");
Expand All @@ -82,7 +83,7 @@ public void NodeCommentIsAddedToNode()
[Test]
public void NodeCommentIsSkippedIfNodeIsNotFound()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var node = new Node { Name = "nodeName" };
builder.AddNode(node);
builder.AddNodeComment("anotherNodeName", "this is a comment");
Expand All @@ -97,7 +98,7 @@ public void NodeCommentIsSkippedIfNodeIsNotFound()
[Test]
public void MessageIsAdded()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var message = new Message { ID = 1};
builder.AddMessage(message);
var dbc = builder.Build();
Expand All @@ -111,7 +112,7 @@ public void MessageIsAdded()
[Test]
public void ExtendedMessageIsAdded()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var message = new Message { ID = 2147483649 };
builder.AddMessage(message);
var dbc = builder.Build();
Expand All @@ -125,7 +126,7 @@ public void ExtendedMessageIsAdded()
[Test]
public void CommentIsAddedToMessage()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var message = new Message { ID = 234 };
builder.AddMessage(message);
builder.AddMessageComment(234, "comment");
Expand All @@ -140,7 +141,7 @@ public void CommentIsAddedToMessage()
[Test]
public void CommentIsNotAddedToMissingMessage()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var message = new Message { ID = 234 };
builder.AddMessage(message);
builder.AddMessageComment(235, "comment");
Expand All @@ -155,7 +156,7 @@ public void CommentIsNotAddedToMissingMessage()
[Test]
public void SignalIsAddedToCurrentMessage()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var message1 = new Message { ID = 234 };
builder.AddMessage(message1);

Expand Down Expand Up @@ -190,7 +191,7 @@ public void SignalIsAddedToCurrentMessage()
[Test]
public void SignalIsNotAddedIfNoMessageHasBeenProvidedFirst()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
builder.AddSignal(new Signal { });
var dbc = builder.Build();

Expand All @@ -201,7 +202,7 @@ public void SignalIsNotAddedIfNoMessageHasBeenProvidedFirst()
[Test]
public void CommentIsAddedToSignal()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var message = new Message { ID = 234 };
builder.AddMessage(message);
var signal = new Signal { Name = "name1" };
Expand All @@ -220,7 +221,7 @@ public void CommentIsAddedToSignal()
[Test]
public void CommentIsNotAddedToMissingSignalMessageId()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var message = new Message { ID = 234 };
builder.AddMessage(message);
var signal = new Signal { Name = "name1" };
Expand All @@ -239,7 +240,7 @@ public void CommentIsNotAddedToMissingSignalMessageId()
[Test]
public void CommentIsNotAddedToMissingSignalName()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var message = new Message { ID = 234 };
builder.AddMessage(message);
var signal = new Signal { Name = "name1" };
Expand All @@ -258,7 +259,7 @@ public void CommentIsNotAddedToMissingSignalName()
[Test]
public void TableValuesAreAddedToSignal()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var message = new Message { ID = 234 };
builder.AddMessage(message);
var signal = new Signal { Name = "name1" };
Expand All @@ -279,7 +280,7 @@ public void TableValuesAreAddedToSignal()
[Test]
public void TableValuesWithExtendedMessageIdAreAddedToSignal()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var message = new Message { ID = 2566896411 };
builder.AddMessage(message);
var signal = new Signal { Name = "name1" };
Expand All @@ -300,7 +301,7 @@ public void TableValuesWithExtendedMessageIdAreAddedToSignal()
[Test]
public void TableValueIsNotAddedToMissingSignalMessageId()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var message = new Message { ID = 234 };
builder.AddMessage(message);
var signal = new Signal { Name = "name1" };
Expand All @@ -321,7 +322,7 @@ public void TableValueIsNotAddedToMissingSignalMessageId()
[Test]
public void TableValueIsNotAddedToMissingSignalName()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var message = new Message { ID = 234 };
builder.AddMessage(message);
var signal = new Signal { Name = "name1" };
Expand All @@ -342,7 +343,7 @@ public void TableValueIsNotAddedToMissingSignalName()
[Test]
public void NamedTableValuesAreAddedToSignal()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var message = new Message { ID = 234 };
builder.AddMessage(message);
var signal = new Signal { Name = "name1" };
Expand All @@ -365,7 +366,7 @@ public void NamedTableValuesAreAddedToSignal()
[Test]
public void NamedTableValueIsNotAddedToMissingSignalMessageId()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var message = new Message { ID = 234 };
builder.AddMessage(message);
var signal = new Signal { Name = "name1" };
Expand All @@ -388,7 +389,7 @@ public void NamedTableValueIsNotAddedToMissingSignalMessageId()
[Test]
public void NamedTableValueIsNotAddedToMissingSignalName()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var message = new Message { ID = 234 };
builder.AddMessage(message);
var signal = new Signal { Name = "name1" };
Expand All @@ -411,7 +412,7 @@ public void NamedTableValueIsNotAddedToMissingSignalName()
[Test]
public void NamedTableValueIsNotAddedIfTableNameDoesNotExist()
{
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());
var message = new Message { ID = 234 };
builder.AddMessage(message);
var signal = new Signal { Name = "name1" };
Expand All @@ -431,7 +432,7 @@ public void NamedTableValueIsNotAddedIfTableNameDoesNotExist()
public void NamedTableValueThatAreNotUsedDoNotHarmOnBuild()
{
var testValuesDict = new Dictionary<int, string>() { { 1, "fake" } };
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());

builder.AddNamedValueTable("aTableName", testValuesDict, "1 fake");
builder.AddNamedValueTable("aTableName2", testValuesDict, "1 fake");
Expand All @@ -446,7 +447,7 @@ public void NamedTableValueThatAreNotUsedDoNotHarmOnBuild()
public void NamedTablesWithSameNameAreManaged()
{
var testValuesDict = new Dictionary<int, string>() { { 1, "fake" } };
var builder = new DbcBuilder();
var builder = new DbcBuilder(new SilentFailureObserver());

builder.AddNamedValueTable("aTableName", testValuesDict, "1 fake");
builder.AddNamedValueTable("aTableName", testValuesDict, "1 fake");
Expand All @@ -456,30 +457,5 @@ public void NamedTablesWithSameNameAreManaged()
Assert.IsEmpty(dbc.Nodes);
Assert.IsEmpty(dbc.Messages);
}

[Test]
public void NamedTablesWithSameNameOverridesPrevious()
{
var builder = new DbcBuilder();
var message = new Message { ID = 234 };
builder.AddMessage(message);
var signal = new Signal { Name = "name1" };
builder.AddSignal(signal);
var testValuesDict = new Dictionary<int, string>() { { 1, "fake1" } };
var testValuesDict2 = new Dictionary<int, string>() { { 2, "fake2" } };

builder.AddNamedValueTable("aTableName", testValuesDict, "1 fake1");
builder.AddNamedValueTable("aTableName", testValuesDict2, "2 fake2");

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

Assert.IsEmpty(dbc.Nodes);
Assert.AreEqual(1, dbc.Messages.Count());
Assert.AreEqual(234, dbc.Messages.First().ID);
Assert.AreEqual("name1", dbc.Messages.First().Signals.First().Name);
Assert.AreEqual(testValuesDict2, dbc.Messages.First().Signals.First().ValueTableMap);
Assert.AreEqual("2 fake2", dbc.Messages.First().Signals.First().ValueTable);
}
}
}
38 changes: 36 additions & 2 deletions DbcParserLib.Tests/EnvironmentVariableLineParserTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using DbcParserLib.Model;
using Moq;
using System.Collections.Generic;
using DbcParserLib.Observers;

namespace DbcParserLib.Tests
{
Expand All @@ -25,9 +26,10 @@ public void Teardown()

private static List<ILineParser> CreateParser()
{
var observer = new SilentFailureObserver();
return new List<ILineParser>() {
new EnvironmentDataVariableLineParser(),
new EnvironmentVariableLineParser()
new EnvironmentDataVariableLineParser(observer),
new EnvironmentVariableLineParser(observer)
};
}

Expand Down Expand Up @@ -165,5 +167,37 @@ public void EnvironmentDataLineIsParsedTest()

Assert.IsTrue(ParseLine(parsingLine, environmentVariableLineParser, dbcBuilderMock.Object, nextLineProviderMock.Object));
}

[Test]
public void EnvironmentDataSyntaxErrorIsObserved()
{
var line = "ENVVAR_DATA_ varName : -1024;";

var observerMock = m_repository.Create<IParseFailureObserver>();
var dbcBuilderMock = m_repository.Create<IDbcBuilder>();
var nextLineProviderMock = m_repository.Create<INextLineProvider>();

observerMock.Setup(o => o.EnvironmentDataVariableSyntaxError());

var lineParser = new EnvironmentDataVariableLineParser(observerMock.Object);
lineParser.TryParse(line, dbcBuilderMock.Object, nextLineProviderMock.Object);
}

[Test]
public void EnvironmentDataNotFoundErrorIsObserved()
{
var varName = "testVar";
uint varSize = 1024;
var line = $"ENVVAR_DATA_ {varName} : {varSize};";

var observerMock = m_repository.Create<IParseFailureObserver>();
var nextLineProviderMock = m_repository.Create<INextLineProvider>();
var dbcBuilder = new DbcBuilder(observerMock.Object);

observerMock.Setup(o => o.EnvironmentVariableNameNotFound(varName));

var lineParser = new EnvironmentDataVariableLineParser(observerMock.Object);
lineParser.TryParse(line, dbcBuilder, nextLineProviderMock.Object);
}
}
}
Loading

0 comments on commit 6fcf801

Please # to comment.