Mercurial > pub > bltoolkit
comparison UnitTests/CS/Aspects/ClearCacheAspect.cs @ 0:f990fcb411a9
Копия текущей версии из github
| author | cin | 
|---|---|
| date | Thu, 27 Mar 2014 21:46:09 +0400 | 
| parents | |
| children | 
   comparison
  equal
  deleted
  inserted
  replaced
| -1:000000000000 | 0:f990fcb411a9 | 
|---|---|
| 1 using NUnit.Framework; | |
| 2 | |
| 3 using BLToolkit.Aspects; | |
| 4 using BLToolkit.Reflection; | |
| 5 using BLToolkit.TypeBuilder; | |
| 6 | |
| 7 namespace Aspects | |
| 8 { | |
| 9 [TestFixture] | |
| 10 public class ClearCacheAspect | |
| 11 { | |
| 12 public abstract class TestClass | |
| 13 { | |
| 14 int _value; | |
| 15 | |
| 16 [Cache] | |
| 17 public virtual int Test1() | |
| 18 { | |
| 19 return _value++; | |
| 20 } | |
| 21 | |
| 22 [ClearCache("Test1")] | |
| 23 public abstract void ClearTest1(); | |
| 24 | |
| 25 [Cache] | |
| 26 public virtual int Test2() | |
| 27 { | |
| 28 return _value++; | |
| 29 } | |
| 30 | |
| 31 [Cache] | |
| 32 public virtual int Test2(int i) | |
| 33 { | |
| 34 return _value++; | |
| 35 } | |
| 36 | |
| 37 [ClearCache("Test2")] | |
| 38 public abstract void ClearTest2(); | |
| 39 | |
| 40 [ClearCache("Test2", typeof(int))] | |
| 41 public abstract void ClearTest2a(); | |
| 42 | |
| 43 [ClearCache("Test2"), ClearCache("Test2", typeof(int))] | |
| 44 public abstract void ClearTest2b(); | |
| 45 } | |
| 46 | |
| 47 public abstract class TestClass1 | |
| 48 { | |
| 49 [ClearCache(typeof(TestClass), "Test2")] | |
| 50 public abstract void ClearTest(); | |
| 51 | |
| 52 [ClearCache(typeof(TestClass), "Test2", typeof(int))] | |
| 53 public abstract void ClearTest1(); | |
| 54 | |
| 55 protected abstract int Test(); | |
| 56 | |
| 57 [ClearCache("Test")] | |
| 58 public abstract void ClearTest3(); | |
| 59 | |
| 60 [ClearCache(typeof(TestClass))] | |
| 61 public abstract void ClearTest4(); | |
| 62 | |
| 63 [ClearCache] | |
| 64 public abstract void ClearTest5(); | |
| 65 } | |
| 66 | |
| 67 [Test] | |
| 68 public void Test1() | |
| 69 { | |
| 70 TestClass tc = TypeFactory.CreateInstance<TestClass>(); | |
| 71 | |
| 72 int value1 = tc.Test1(); | |
| 73 int value2 = tc.Test1(); | |
| 74 | |
| 75 Assert.AreEqual(value1, value2); | |
| 76 | |
| 77 tc.ClearTest1(); | |
| 78 | |
| 79 Assert.AreNotEqual(value1, tc.Test1()); | |
| 80 } | |
| 81 | |
| 82 [Test] | |
| 83 public void Test2() | |
| 84 { | |
| 85 TestClass tc = TypeFactory.CreateInstance<TestClass>(); | |
| 86 | |
| 87 tc.ClearTest2(); | |
| 88 | |
| 89 int value1 = tc.Test2(); | |
| 90 int value2 = tc.Test2(); | |
| 91 | |
| 92 Assert.AreEqual(value1, value2); | |
| 93 | |
| 94 tc.ClearTest2(); | |
| 95 | |
| 96 Assert.AreNotEqual(value1, tc.Test2()); | |
| 97 } | |
| 98 | |
| 99 [Test] | |
| 100 public void Test2a() | |
| 101 { | |
| 102 TestClass tc = TypeFactory.CreateInstance<TestClass>(); | |
| 103 | |
| 104 tc.ClearTest2a(); | |
| 105 | |
| 106 int value1 = tc.Test2(1); | |
| 107 int value2 = tc.Test2(1); | |
| 108 | |
| 109 Assert.AreEqual(value1, value2); | |
| 110 | |
| 111 tc.ClearTest2a(); | |
| 112 | |
| 113 Assert.AreNotEqual(value1, tc.Test2(1)); | |
| 114 } | |
| 115 | |
| 116 [Test] | |
| 117 public void Test2b() | |
| 118 { | |
| 119 TestClass tc = TypeFactory.CreateInstance<TestClass>(); | |
| 120 | |
| 121 tc.ClearTest2b(); | |
| 122 | |
| 123 int value1 = tc.Test2(); | |
| 124 int value2 = tc.Test2(); | |
| 125 int value3 = tc.Test2(1); | |
| 126 int value4 = tc.Test2(1); | |
| 127 | |
| 128 Assert.AreEqual(value1, value2); | |
| 129 Assert.AreEqual(value3, value4); | |
| 130 | |
| 131 tc.ClearTest2b(); | |
| 132 | |
| 133 Assert.AreNotEqual(value1, tc.Test2()); | |
| 134 Assert.AreNotEqual(value3, tc.Test2(1)); | |
| 135 } | |
| 136 | |
| 137 [Test] | |
| 138 public void Test3() | |
| 139 { | |
| 140 TestClass tc1 = TypeAccessor<TestClass>. CreateInstance(); | |
| 141 TestClass1 tc2 = TypeAccessor<TestClass1>.CreateInstance(); | |
| 142 | |
| 143 tc1.ClearTest2b(); | |
| 144 | |
| 145 int value1 = tc1.Test2(); | |
| 146 int value2 = tc1.Test2(); | |
| 147 int value3 = tc1.Test2(1); | |
| 148 int value4 = tc1.Test2(1); | |
| 149 | |
| 150 Assert.AreEqual(value1, value2); | |
| 151 Assert.AreEqual(value3, value4); | |
| 152 | |
| 153 tc2.ClearTest(); | |
| 154 tc2.ClearTest1(); | |
| 155 | |
| 156 Assert.AreNotEqual(value1, tc1.Test2()); | |
| 157 Assert.AreNotEqual(value3, tc1.Test2(1)); | |
| 158 } | |
| 159 | |
| 160 [Test] | |
| 161 public void Test4() | |
| 162 { | |
| 163 TestClass1 tc = TypeAccessor<TestClass1>.CreateInstance(); | |
| 164 | |
| 165 tc.ClearTest3(); | |
| 166 } | |
| 167 | |
| 168 [Test] | |
| 169 public void Test5() | |
| 170 { | |
| 171 TestClass tc1 = TypeAccessor<TestClass>. CreateInstance(); | |
| 172 TestClass1 tc2 = TypeAccessor<TestClass1>.CreateInstance(); | |
| 173 | |
| 174 tc1.ClearTest2b(); | |
| 175 | |
| 176 int value1 = tc1.Test2(); | |
| 177 int value2 = tc1.Test2(); | |
| 178 int value3 = tc1.Test2(1); | |
| 179 int value4 = tc1.Test2(1); | |
| 180 | |
| 181 Assert.AreEqual(value1, value2); | |
| 182 Assert.AreEqual(value3, value4); | |
| 183 | |
| 184 tc2.ClearTest(); | |
| 185 tc2.ClearTest4(); | |
| 186 | |
| 187 Assert.AreNotEqual(value1, tc1.Test2()); | |
| 188 Assert.AreNotEqual(value3, tc1.Test2(1)); | |
| 189 } | |
| 190 | |
| 191 [Test] | |
| 192 public void Test6() | |
| 193 { | |
| 194 TestClass1 tc = TypeAccessor<TestClass1>.CreateInstance(); | |
| 195 | |
| 196 tc.ClearTest5(); | |
| 197 } | |
| 198 } | |
| 199 } | 
