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)); }
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)); } }
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); }
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)); } } }
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)); }
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)); }
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)); } }
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)); } } }
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])); } } }
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)); }