Exemplo n.º 1
0
        public void DoNotChangeMemoryWhenValueExisted(
            [Range(0u, WordsOnPage + 20u)]
            uint count)
        {
            ushort[] array = this.GenerateArray(count);

            // 1
            for (ushort i = 0; i < Convert.ToUInt16(count); i++)
            {
                Eeprom.Result result = this.mMemory.Write(i, i);

                if (i < WordsOnPage - ReservedWords)
                {
                    Assert.That(result, Is.EqualTo(Eeprom.Result.Success));
                }
                else
                {
                    Assert.That(result, Is.EqualTo(Eeprom.Result.NoEmptyRecord));
                }
            }

            byte[] copy1 = (byte[])this.mMemory.GetBufferCopy();

            // 2
            for (ushort i = 0; i < Convert.ToUInt16(count); i++)
            {
                Eeprom.Result result = this.mMemory.Write(i, i);

                if (i < WordsOnPage - ReservedWords)
                {
                    Assert.That(result, Is.EqualTo(Eeprom.Result.Success));
                }
                else
                {
                    Assert.That(result, Is.EqualTo(Eeprom.Result.NoEmptyRecord));
                }
            }

            byte[] copy2 = (byte[])this.mMemory.GetBufferCopy();

            // 3
            for (ushort i = 0; i < Convert.ToUInt16(count); i++)
            {
                Eeprom.Result result = this.mMemory.Write(i, i);

                if (i < WordsOnPage - ReservedWords)
                {
                    Assert.That(result, Is.EqualTo(Eeprom.Result.Success));
                }
                else
                {
                    Assert.That(result, Is.EqualTo(Eeprom.Result.NoEmptyRecord));
                }
            }

            byte[] copy3 = (byte[])this.mMemory.GetBufferCopy();

            Assert.That(copy1, Is.EqualTo(copy2));
            Assert.That(copy2, Is.EqualTo(copy3));
        }
Exemplo n.º 2
0
        public void CanRelocateFilledByDuplicates()
        {
            ushort[] array = this.GenerateArray(WordsOnPage - 2);

            // 1
            for (ushort i = 0; i < Convert.ToUInt16(array.Length); i++)
            {
                Eeprom.Result result = this.mMemory.Write(i, array[i]);

                Assert.That(result, Is.EqualTo(Eeprom.Result.Success));
            }

            for (ushort i = 0; i < Convert.ToUInt16(array.Length); i++)
            {
                array[i]++;
            }

            // 2
            for (ushort i = 0; i < Convert.ToUInt16(array.Length); i++)
            {
                Eeprom.Result result = this.mMemory.Write(i, array[i]);

                Assert.That(result, Is.EqualTo(Eeprom.Result.Success));
            }
        }
Exemplo n.º 3
0
        public void CanReplace(
            [Range(26u, 26u)]
            uint count)
        {
            ushort[] values1 = this.GenerateArray(count);
            ushort[] values2 = this.GenerateArray(count);
            ushort[] values3 = this.GenerateArray(count);
            ushort[] values4 = this.GenerateArray(count);
            ushort[] values5 = this.GenerateArray(count);

            Action <ushort[], uint> check = (_array, _count) =>
            {
                for (ushort i = 0; i < Convert.ToUInt16(_count); i++)
                {
                    Eeprom.Result result = this.mMemory.Write(i, _array[i]);
                    Assert.That(result, Is.EqualTo(Eeprom.Result.Success));
                }

                for (ushort i = 0; i < Convert.ToUInt16(_count); i++)
                {
                    ushort        value;
                    Eeprom.Result result = this.mMemory.Read(i, out value);
                    Assert.That(result, Is.EqualTo(Eeprom.Result.Success));
                    Assert.That(value, Is.EqualTo(_array[i]));
                }
            };

            check(values1, count);
            check(values2, count);
            check(values3, count);
            check(values4, count);
            check(values5, count);
        }
Exemplo n.º 4
0
        public void CanRead(
            [Range(0u, WordsOnPage + 20u, WordsOnPage / 7u)]
            uint count)
        {
            for (ushort i = 0; i < count; i++)
            {
                Eeprom.Result result = this.mMemory.Write(i, i);
            }

            for (ushort i = 0; i < count; i++)
            {
                ushort        value;
                Eeprom.Result result = this.mMemory.Read(i, out value);

                if (i < WordsOnPage - ReservedWords)
                {
                    Assert.That(result, Is.EqualTo(Eeprom.Result.Success));
                    Assert.That(value, Is.EqualTo(i));
                }
                else
                {
                    Assert.That(result, Is.EqualTo(Eeprom.Result.KeyNotFound));
                }
            }
        }
Exemplo n.º 5
0
        public void Pre()
        {
            this.mRnd = new Random(DateTime.Now.Millisecond);

            this.mMemory = new Eeprom();
            Eeprom.Result result = this.mMemory.Initialize(WordsOnPage, PagesCount);
            Assert.That(result, Is.EqualTo(Eeprom.Result.Success));
        }
Exemplo n.º 6
0
        public void DoNotMovePageWithAllRecordAreUniqueAndFilled()
        {
            uint count = WordsOnPage;

            ushort[] array = this.GenerateArray(count);

            // 1
            for (ushort i = 0; i < Convert.ToUInt16(count); i++)
            {
                Eeprom.Result result = this.mMemory.Write(i, i);

                if (i < WordsOnPage - ReservedWords)
                {
                    Assert.That(result, Is.EqualTo(Eeprom.Result.Success));
                }
                else
                {
                    Assert.That(result, Is.EqualTo(Eeprom.Result.NoEmptyRecord));
                }
            }

            byte[] copy1 = (byte[])this.mMemory.GetBufferCopy();

            // 2
            for (ushort i = 0; i < Convert.ToUInt16(count); i++)
            {
                Eeprom.Result result = this.mMemory.Write(i, i);

                if (i < WordsOnPage - ReservedWords)
                {
                    if (result != Eeprom.Result.Success)
                    {
                        TestContext.WriteLine("{0}", i);
                    }
                    Assert.That(result, Is.EqualTo(Eeprom.Result.Success));
                }
                else
                {
                    Assert.That(result, Is.EqualTo(Eeprom.Result.NoEmptyRecord));
                }
            }

            byte[] copy2 = (byte[])this.mMemory.GetBufferCopy();

            Assert.That(copy1, Is.EqualTo(copy2));
        }
Exemplo n.º 7
0
        public void CannotRelocateFilledByUniques()
        {
            // 1
            for (ushort i = 0; i < Convert.ToUInt16(WordsOnPage - 1); i++)
            {
                Eeprom.Result result = this.mMemory.Write(i, 0xff00);

                Assert.That(result, Is.EqualTo(Eeprom.Result.Success));
            }

            // 2
            for (ushort i = 0; i < Convert.ToUInt16(WordsOnPage - 1); i++)
            {
                Eeprom.Result result = this.mMemory.Write(i, 0x00ff);

                Assert.That(result, Is.EqualTo(Eeprom.Result.NoEmptyRecord));
            }
        }
Exemplo n.º 8
0
        public void CanWrite(
            [Range(0u, WordsOnPage + 20u)]
            uint count)
        {
            for (ushort i = 0; i < Convert.ToUInt16(count); i++)
            {
                Eeprom.Result result = this.mMemory.Write(i, i);

                if (i < WordsOnPage - ReservedWords)
                {
                    Assert.That(result, Is.EqualTo(Eeprom.Result.Success));
                }
                else
                {
                    Assert.That(result, Is.EqualTo(Eeprom.Result.NoEmptyRecord));
                }
            }
        }
Exemplo n.º 9
0
        public void CanReadAllAfterRelocation()
        {
            uint count = (WordsOnPage - ReservedWords) / 2 + 1;

            ushort[] array  = this.GenerateArray(count);
            ushort[] array2 = this.GenerateArray(count);
            ushort[] array3 = this.GenerateArray(count);

            // 1
            for (ushort i = 0; i < Convert.ToUInt16(count); i++)
            {
                Eeprom.Result result = this.mMemory.Write(i, array[i]);
                Assert.That(result, Is.EqualTo(Eeprom.Result.Success));

                {
                    ushort readed;
                    result = this.mMemory.Read(i, out readed);
                    Assert.That(result, Is.EqualTo(Eeprom.Result.Success));
                    Assert.That(readed, Is.EqualTo(array[i]));
                }

                result = this.mMemory.Write(i, array2[i]);
                Assert.That(result, Is.EqualTo(Eeprom.Result.Success));

                {
                    ushort readed;
                    result = this.mMemory.Read(i, out readed);
                    Assert.That(result, Is.EqualTo(Eeprom.Result.Success));
                    Assert.That(readed, Is.EqualTo(array2[i]));
                }

                result = this.mMemory.Write(i, array3[i]);
                Assert.That(result, Is.EqualTo(Eeprom.Result.Success));

                {
                    ushort readed;
                    result = this.mMemory.Read(i, out readed);
                    Assert.That(result, Is.EqualTo(Eeprom.Result.Success));
                    Assert.That(readed, Is.EqualTo(array3[i]));
                }
            }
        }
Exemplo n.º 10
0
        public void CanDetectOverwritePossibility()
        {
            UInt32 valueOld = Convert.ToUInt32(this.mRnd.Next());
            UInt32 valueNew = Convert.ToUInt32(this.mRnd.Next());

            Eeprom.Result result  = this.mMemory.LowLevelCanOverwrite(valueOld, valueNew);
            bool          result1 = (result == Eeprom.Result.Success);
            int           problemBitIndex;
            bool          result2 = this.CanOverwrite(valueOld, valueNew, out problemBitIndex);

            if (result1 != result2)
            {
                TestContext.WriteLine("New: {0} {1:X8}", this.ConvertValueToBitString(valueNew), valueNew);
                TestContext.WriteLine("Old: {0} {1:X8}", this.ConvertValueToBitString(valueOld), valueOld);
                TestContext.WriteLine("Bit: {0}^", new string(' ', (31 - problemBitIndex) * 2));
                TestContext.WriteLine("Actual '{0}' <> expected '{1}'", result1, result2);
            }

            Assert.That(result1, Is.EqualTo(result2));
        }