Example #1
0
        public void GetRepairedConstructionsTest()
        {
            //arrange
            var H = new byte[, ]
            {
                { 1, 1, 1, 0, 1, 0, 0 },
                { 1, 0, 1, 1, 0, 1, 0 },
                { 0, 1, 1, 1, 0, 0, 1 }
            };
            var constructionlist = new List <byte[]>
            {
                new byte[] { 1, 0, 1, 0, 1, 0, 1, 1 },
                new byte[] { 1, 0, 1, 1, 1, 0, 1, 1 },
                new byte[] { 1, 1, 1, 0, 1, 0, 1, 1 },
            };

            var expectedRepairConstructions = new List <byte[]>
            {
                new byte[] { 1, 0, 0, 0, 1, 0, 1, 1 },
                new byte[] { 1, 0, 1, 1, 1, 0, 1, 1 },
                new byte[] { 1, 1, 1, 0, 1, 0, 1, 1 },
            };
            //act
            var tools     = new HammingRepairTools(H);
            var syndromes = tools.GetSyndromeList(constructionlist);
            var actualRepairConstructions = tools.GetRepairedConstructions(constructionlist, syndromes);

            //assert
            Assert.That.AreEqual(expectedRepairConstructions, actualRepairConstructions,
                                 (m1, m2) =>
            {
                if (m1.Where((t, i) => t.Length != m2[i].Length).Any())
                {
                    return(false);
                }

                for (var j = 0; j < m2.Count; j++)
                {
                    for (var k = 0; k < m2[0].Length; k++)
                    {
                        if (m1[j][k] != m2[j][k])
                        {
                            return(false);
                        }
                    }
                }
                return(true);
            });
        }
Example #2
0
        private void RepairMessageBlocks()
        {
            SyndromeCollection.Clear();
            Corrections.Clear();
            var arrConstructions = ConvertObsCollectionToListOfByteArray(HCodesCollection);

            HammingTools = new HammingRepairTools(_checkCodesMatrix);
            var slist = HammingTools.GetSyndromeList(arrConstructions);

            foreach (var arr in slist)
            {
                SyndromeCollection.Add(new SyndromeViewModel(arr));
            }
            var arrcorrections = HammingTools.GetRepairedConstructions(arrConstructions, slist);

            for (var i = 0; i < arrcorrections.Count; i++)
            {
                Corrections.Add(new CorrectionViewModel(slist[i], arrcorrections[i]));
            }

            _eventAggregator.GetEvent <RepairedCodeSentEvent>().Publish(arrcorrections);
        }
Example #3
0
        public void HammingRepairToolsTest()
        {
            //arrange
            var H = new byte[, ]
            {
                { 1, 1, 1, 0, 1, 0, 0 },
                { 1, 0, 1, 1, 0, 1, 0 },
                { 0, 1, 1, 1, 0, 0, 1 }
            };
            var extendedH = new byte[, ]
            {
                { 1, 1, 1, 1, 1, 1, 1, 1 },
                { 0, 1, 1, 1, 0, 1, 0, 0 },
                { 0, 1, 0, 1, 1, 0, 1, 0 },
                { 0, 0, 1, 1, 1, 0, 0, 1 }
            };
            //act
            var tools          = new HammingRepairTools(H);
            var actualExtended = tools.ExtendedMatrix;

            //assert
            CollectionAssert.AreEqual(extendedH, actualExtended);
        }