public async Task GetOrAddNull_WaitsOnNull() { Setup(); // This thread will make an "Allocating" item, the "waiter" should wait for that to change. var secondGenerator = Map.GetGenerator(); Converter retrieved = null; var waiter = new Task(() => { retrieved = Generator.GetExistingOrAddNull(typeof(int)); }); // Make an "Allocating" item. Generator.GetExistingOrAddNull(typeof(int)); waiter.Start(); // Wait a second - this should be more than enough time for the waiter to be stuck in the waiting cycle. await Task.Delay(1000); // Now, we will finish the item, and see if the thread finishes accordingly. var newMapItem = new EmptyConverter(); Generator.ApplyItem(newMapItem, typeof(int)); await Task.Delay(1000); Assert.AreEqual(newMapItem, retrieved); ABSaveMap.ReleaseGenerator(secondGenerator); }
public void EmptyConverterWorks() { var converter = new EmptyConverter(); Assert.AreEqual(converter.Call(""), notVisible); Assert.AreEqual(converter.Call(null), notVisible); Assert.AreEqual(converter.Call("foobar"), visible); }
public void TestEmptyConverter() { var converter = new EmptyConverter(); converter.TreatNullAsEmpty = false; Assert.AreEqual(false, converter.Convert(null, null, null, null)); Assert.AreEqual(true, converter.Convert(string.Empty, null, null, null)); Assert.AreEqual(true, converter.Convert(new object[0], null, null, null)); Assert.AreEqual(false, converter.Convert(new object[] { new object() }, null, null, null)); Assert.AreEqual(false, converter.Convert(new object[] { new object(), new object() }, null, null, null)); converter.TreatNullAsEmpty = true; Assert.AreEqual(true, converter.Convert(null, null, null, null)); Assert.AreEqual(true, converter.Convert(string.Empty, null, null, null)); Assert.AreEqual(true, converter.Convert(new object[0], null, null, null)); Assert.AreEqual(false, converter.Convert(new object[] { new object() }, null, null, null)); Assert.AreEqual(false, converter.Convert(new object[] { new object(), new object() }, null, null, null)); }