public void ThreadSafetyDictionaryFile_DictionaryFile_OneThread() { var dic = new ThreadSafetyDictionaryFile(Path.GetTempFileName()); dic.AddWord("test"); Assert.True(dic.ContainsWord("test")); Assert.False(dic.ContainsWord("no_test_word")); }
public void ThreadSafetyDictionaryFile_DictionaryFile_MultiThread() { var dic = new ThreadSafetyDictionaryFile(Path.GetTempFileName()); Task ta = Task.Run(() => { for (int i = 0; i < 100; i++) { dic.AddWord("a" + i); } }); Task tb = Task.Run(() => { for (int i = 0; i < 100; i++) { dic.AddWord("b" + i); } }); Task tc = Task.Run(() => { for (int i = 0; i < 100; i++) { dic.AddWord("c" + i); } }); Task td = Task.Run(() => { for (int i = 0; i < 100; i++) { dic.AddWord("d" + i); } }); Task.WaitAll(ta, tb, tc, td); for (int i = 0; i < 100; i++) { Assert.True(dic.ContainsWord("a" + i)); Assert.True(dic.ContainsWord("b" + i)); Assert.True(dic.ContainsWord("c" + i)); Assert.True(dic.ContainsWord("d" + i)); } }
public void ThreadSafetyDictionaryFile_DictionaryFile_MultiThreadAndInstance() { string fileName = Path.GetTempFileName(); Task ta = Task.Run(() => { var dic1 = new ThreadSafetyDictionaryFile(fileName); for (int i = 0; i < 100; i++) { dic1.AddWord("a" + i); } }); Task tb = Task.Run(() => { var dic2 = new ThreadSafetyDictionaryFile(fileName); for (int i = 0; i < 100; i++) { dic2.AddWord("b" + i); } }); Task tc = Task.Run(() => { var dic3 = new ThreadSafetyDictionaryFile(fileName); for (int i = 0; i < 100; i++) { dic3.AddWord("c" + i); } }); Task td = Task.Run(() => { var dic4 = new ThreadSafetyDictionaryFile(fileName); for (int i = 0; i < 100; i++) { dic4.AddWord("d" + i); } }); var dic = new ThreadSafetyDictionaryFile(fileName); Task.WaitAll(ta, tb, tc, td); dic.AddWord("test"); for (int i = 0; i < 100; i++) { Assert.True(dic.ContainsWord("a" + i)); Assert.True(dic.ContainsWord("b" + i)); Assert.True(dic.ContainsWord("c" + i)); Assert.True(dic.ContainsWord("d" + i)); } }