public CANDatabase ParseFile(FileModel file, ParsingArguments arguments) { string line; CANDatabase dbcObject = new CANDatabase(); dbcObject.Name = file.Name; dbcObject.Messages = new List <Message>(); using FileStream fileStream = File.OpenRead(file.Location); using var streamReader = new StreamReader(fileStream); while ((line = streamReader.ReadLine()) != null) { if (LinePrefix.CheckLine(line, "BU_")) { dbcObject.NetworkNodes = NetworkNodeParser.ParseLine(line); } else if (LinePrefix.CheckLine(line, "BO_")) { Message message = MessageParser.ParseLine(line, arguments.Messages); dbcObject.Messages.Add(message); } else if (LinePrefix.CheckLine(line, " SG_")) { Signal signal = SignalParser.ParseLine(line, arguments.Signals); int indexOfLast = dbcObject.Messages.Count - 1; dbcObject.Messages[indexOfLast].Signals.Add(signal); } } return(dbcObject); }
public void SignalParserShouldReturnCorrectValues() { string line = " SG_ cell_voltage_002 m0 : 16|8@1+ (0.01,2) [2|4.55] \"V\" VCU"; List <string> arguments = new List <string> { "Name", "StartBit", "Length" }; Signal signal = SignalParser.ParseLine(line, arguments); Assert.True(signal.Name == "cell_voltage_002" && signal.StartBit == 16 && signal.Length == 8); }