public void GetNodesTest()
        {
            //Given
            IList <string> nodesList = DBCFileParser.GetNodes(DBCFileTest);

            //When
            Assert.Equal(3, nodesList.Count);
            //Then
        }
        public void ParserMessageBlocksTest()
        {
            //Given
            var res = DBCFileParser.ParserMessageBlocks(DBCFileTest);

            //When
            Assert.Equal(7, res.Count);
            //Then
        }
        public void GetSignalLineTextTest()
        {
            //Given
            IList <string> signalLines = null;

            //When
            signalLines = DBCFileParser.GetSignalLineText(DBCFileTest);
            //Then
            Assert.Equal(41, signalLines.Count);
        }
        public void GetMessageBlockTextTest()
        {
            IList <string> messageBlocks = DBCFileParser.GetMessageBlockText(DBCFileTest);

            // foreach (var messageBlock in messageBlocks)
            // {
            //     Console.WriteLine (messageBlock);
            // }
            Assert.Equal(7, messageBlocks.Count);
        }
        public void MessageItemParserTextTest()
        {
            var res = DBCFileParser.MessageItemParser(DBCMessageBlock);

            Assert.Equal("Pt_Veh_1", res.MessageName);
            Assert.Equal(16u, res.MessageId);
            Assert.Equal(8u, res.MessageSize);
            Assert.Equal("EMS", res.Transmitter);
            Assert.Equal(7, res.SignalList.Count);
        }
        public void ParserNodesTest()
        {
            //Given
            var res = DBCFileParser.ParserNodes(DBCFileTest);

            //When
            Assert.Equal(4, res.Where(node => node.NodeName.Equals("EMS")).First().TransimitMessages.Count);
            Assert.Equal(3, res.Where(node => node.NodeName.Equals("ED")).First().TransimitMessages.Count);
            Assert.Equal(3, res.Where(node => node.NodeName.Equals("EMS")).First().ReceiveMessages.Count);
            Assert.Equal(4, res.Where(node => node.NodeName.Equals("ED")).First().ReceiveMessages.Count);
            Assert.Equal(1, res.Where(node => node.NodeName.Equals("BMS")).First().ReceiveMessages.Count);
            //Then
        }
        public void ParserSignalLineTextTest1()
        {
            //Given
            string signalLine = " SG_ Pt_tiEdrvShOff : 50|12@1+ (1,0) [0|4095] \"min\"  ED";

            //When
            SignalItem item = DBCFileParser.ParserSignalLineText(signalLine);

            //Then
            Assert.Equal("Pt_tiEdrvShOff", item.SignalName);
            Assert.Equal(50u, item.StartBit);
            Assert.Equal(12u, item.SignalSize);
            Assert.Equal(SignalItem.ByteOrderEnum.Intel, item.ByteOrder);
            Assert.Equal(SignalItem.ValueTypeEnum.Unsigned, item.ValueType);
            Assert.Equal(1f, item.Factor);
            Assert.Equal(0f, item.Offset);
            Assert.Equal(0u, item.Min);
            Assert.Equal(4095u, item.Max);
            Assert.Equal("min", item.Unit);
            Assert.Contains("ED", item.Receiver);
        }
        public void ConfigureParametersByTemplateTest()
        {
            string projectDirPath = @"C:\Users\ITQ2CS\rtc_sandbox\rbd_briBk10_gly_sw_Development_RWS_Hansong_Dev\rbd";
            var    pathAll        = ProjectFileFilter.SearchForDirectory(projectDirPath, false,
                                                                         new List <string> ()
            {
                @"\\[\S]+\.arxml$"
            },
                                                                         new List <string> ()
            {
                @"\\generated\\",
                @"\\pf\\",
            });
            List <AR_PackageBase> packageList = new List <AR_PackageBase> ();
            List <ElementBase>    elementList = new List <ElementBase> ();
            // LoadElements
            var list = pathAll
                       .Select(path => new { ELE = XElement.Parse(File.ReadAllText(path)), FilePath = path })
                       .SelectMany(ele => AR_PackageBase.ReadArxmlFileRoot(ele.ELE, ele.FilePath))
                       //.Where (ele => ele != null)
                       .ToList();
            //watching the change of xml
            StringBuilder changList = new StringBuilder();

            changList.AppendJoin(',', "Package File", "Operation Target", "Operation Type", "Parameter Type", "Parameter Def", "Parameter Value", "\n");
            foreach (var packageRoot in list)
            {
                packageRoot.AR_PackageArxml.Changed += (sender, e) =>
                {
                    packageRoot.IsChanged = true;
                    var element = sender as XElement;
                    //search element until find ECUC container
                    var parent    = element;
                    var parameter = element;
                    while (parent != null && parent.Name.LocalName != "ECUC-CONTAINER-VALUE")
                    {
                        parent = parent.Parent;
                    }
                    while (parameter != null && !parameter.Name.LocalName.Contains("PARAM-VALUE"))
                    {
                        if (parameter.Parent != null)
                        {
                            parameter = parameter.Parent;
                        }
                        else
                        {
                            parameter = null;
                            break;
                        }
                    }
                    changList.AppendJoin(',',
                                         packageRoot.FilePath.Split("\\").Last(),
                                         parent?.Element(XName.Get("SHORT-NAME", parent.Name.Namespace.NamespaceName))?.Value,
                                         e.ObjectChange.ToString(),
                                         parameter?.Name.LocalName,
                                         parent == null? "" : parameter?.Element(XName.Get("DEFINITION-REF", parameter.Name.NamespaceName))?.Value,
                                         parameter?.Element(XName.Get("VALUE", parameter.Name.NamespaceName))?.Value,
                                         "\n");
                };
                AR_PackageBase.GetAllARPackagesAndElements(packageRoot, packageList, elementList);
            }

            ComStackParametersDealer.ConfigureArxmlUsingDBCFiles(DBCFileParser.ParserNodes(DBCText).Where(elementList => elementList.NodeName.Equals("ED")).First(), elementList);
            //try to save and replace and backup files
            foreach (var packageRoot in list.Where(package => package.IsChanged))
            {
                File.Copy(packageRoot.FilePath, packageRoot.FilePath + "." + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + "-BAK");
                var xml = packageRoot.AR_PackageArxml;
                while (xml.Parent != null)
                {
                    xml = xml.Parent;
                }
                xml.Save(packageRoot.FilePath);
            }

            //ComStackParametersDealer.ConfigureArxmlUsingDBCFiles()
            // Assert.Equal (10, pathAll.Length);
            // string logPath = FileSysHelper.GetCurrentAppLocationPath () + "\\ChangLists\\"; //
            // if (!Directory.Exists (logPath))
            // {
            //     Directory.CreateDirectory (logPath);
            // }
            // using (StreamWriter writer = new StreamWriter (logPath + DateTime.Now.ToString ("yyyy-MM-dd") + ".csv"))
            // {
            //     writer.Write (changList.ToString ());
            // }
        }