public IEnumerator LoadTimeUnaffectedBySaving() { var beforeNewSave = DateTime.Now; yield return(null); var saveData = SaveDataTestImpl.NewSaveFile(nameof(LoadTimeUnaffectedBySaving)); var afterNewSave = DateTime.Now; AssertAll.Of( () => Assert.That(saveData.LastSaveTime, Is.InRange(beforeNewSave, afterNewSave)), () => Assert.That(saveData.LastLoadTime, Is.Null) ); var oldSaveTime = saveData.LastSaveTime; var oldLoadTime = saveData.LastLoadTime; yield return(new WaitForSecondsRealtime(1)); var beforeReSave = DateTime.Now; yield return(null); saveData.Save(false); var afterReSave = DateTime.Now; AssertAll.Of( () => Assert.That(saveData.LastSaveTime, Is.InRange(beforeReSave, afterReSave)), () => Assert.That(saveData.LastSaveTime, Is.Not.EqualTo(oldSaveTime)), () => Assert.That(saveData.LastLoadTime, Is.EqualTo(oldLoadTime)) ); }
public IEnumerator SaveTimeUnaffectedByLoading() { DateTime beforeNewSave = DateTime.Now; yield return(null); var saveData = SaveDataTestImpl.NewSaveFile(nameof(SaveTimeUnaffectedByLoading)); DateTime afterNewSave = DateTime.Now; AssertAll.Of( () => Assert.That(saveData.LastSaveTime, Is.InRange(beforeNewSave, afterNewSave)), () => Assert.That(saveData.LastLoadTime, Is.Null) ); var oldSaveTime = saveData.LastSaveTime; var oldLoadTime = saveData.LastLoadTime; yield return(new WaitForSecondsRealtime(1)); DateTime beforeReload = DateTime.Now; yield return(null); saveData.Reload(); DateTime afterReload = DateTime.Now; AssertAll.Of( () => Assert.That(saveData.LastSaveTime, Is.EqualTo(oldSaveTime), $"The {nameof(SaveDataTestImpl.LastSaveTime)} should not have changed, because we {nameof(SaveDataTestImpl.Reload)}-ed without {nameof(SaveDataTestImpl.Save)}-ing!"), () => Assert.That(saveData.LastLoadTime, Is.Not.EqualTo(oldLoadTime), $"The {nameof(SaveDataTestImpl.LastLoadTime)} should have changed, because we {nameof(SaveDataTestImpl.Reload)}-ed!"), () => Assert.That(saveData.LastLoadTime, Is.InRange(beforeReload, afterReload)) ); }
public void TestToStringMatchesToJson() { var newSave = SaveDataTestImpl.NewSaveFile(MethodBase.GetCurrentMethod().Name); var saveJson = newSave.ToJson(); var saveString = newSave.ToString(); Assert.That(saveString, Is.EqualTo(saveJson)); }
public void TestUseReSaveDelay() { SaveDataTestImpl saveDataTestImpl = SaveDataTestImpl.NewSaveFile(nameof(TestUseReSaveDelay)); var message = $"{nameof(ReSaveDelayException)} when saved again within the {nameof(SaveData.ReSaveDelay)} ({SaveData.ReSaveDelay})!"; try { saveDataTestImpl.Save(true); } catch (ReSaveDelayException e) { Assert.Pass($"Properly threw a {message}\nException: {e.Message}"); } Assert.Fail($"Did NOT throw a {message}"); }
public IEnumerator TestLoadMostRecentSaveFile() { //save a few files const int saveCount = 3; const string nickName = nameof(TestLoadMostRecentSaveFile); //create a new save file with the desired nickname SaveDataTestImpl saveData = SaveDataTestImpl.NewSaveFile(nickName); for (int i = 0; i < saveCount; i++) { if (i != 0) { Log($"Waiting {SaveData.ReSaveDelay} before continuing..."); } //add a unique value into the save data saveData.Word = $"SAVE_{i}"; //re-save the save data yield return(new WaitForSecondsRealtime(0.1f)); saveData.Save(false); Log($"Saved {nickName} #{i}:\n{saveData}"); AssertAll.Of( //Assert that the timestamp in the filename matches the lastSaveTime () => Assert.That(saveData, Has.Property(nameof(saveData.LastSaveTime_Exact)).Not.Null), () => Assert.That( saveData.LastSaveTime_Exact?.Ticks, Is.EqualTo(SaveDataTestImpl.GetSaveDate(saveData.LatestSaveFilePath).Ticks), $"Incorrect timestamp pulled from path {saveData.LatestSaveFilePath}" ), //load the save data and check the unique value () => Assert.That(SaveDataTestImpl.Load(nickName).Word, Is.EqualTo(saveData.Word)) ); } }
public void LoadMostRecentFromInstance() { var saveData = SaveDataTestImpl.NewSaveFile(nameof(LoadMostRecentFromInstance)); var firstEdit = "First Edit"; saveData.Word = firstEdit; saveData.Save(false); var saveData2 = SaveDataTestImpl.NewSaveFile(saveData.Nickname); var secondEdit = "Second Edit"; saveData2.Word = secondEdit; saveData2.Save(false); Assert.That(saveData.Word, Is.EqualTo(firstEdit)); Assert.That(saveData, Is.Not.SameAs(saveData2)); var loadedSave = saveData.Reload(); Assert.That(loadedSave, Is.SameAs(saveData)); Assert.That(saveData.Word, Is.Not.EqualTo(firstEdit)); Assert.That(saveData.Word, Is.EqualTo(secondEdit)); }