1: [Test]
2: public void ShouldRetrieveSingleObjectByType()
3: { 4: SmartBag bag = new SmartBag();
5: Url url = new Url("/asdf"); //arbitrary object 6: bag.Add(url);
7:
8: Assert.That(bag.Get<Url>(), Is.EqualTo(url));
9: Assert.That(bag.Get(typeof (Url)), Is.EqualTo(url));
10: }
11:
12: [Test, ExpectedException(ExceptionType = typeof (ArgumentException),
13: ExpectedMessage = "You can only add one default object for type 'System.Security.Policy.Url'.")]
14: public void AddingTwoDefaultObjectsOfSameTypeThrows()
15: { 16: Url url1 = new Url("/1"); 17: Url url2 = new Url("/2"); 18:
19: SmartBag bag = new SmartBag();
20: bag.Add(url1);
21: bag.Add(url2);
22: }
23:
24: [Test, ExpectedException(typeof (ArgumentException),
25: ExpectedMessage = "No object exists with key 'System.Security.Policy.Url'.")]
26: public void ShouldGetMeaningfulExceptionIfObjectDoesntExist()
27: { 28: SmartBag bag = new SmartBag();
29: Url url = bag.Get<Url>();
30: }
31:
32: [Test]
33: public void ShouldReportContainsCorrectly()
34: { 35: SmartBag bag = new SmartBag();
36: bag.Add(new Url("/2")); 37:
38: Assert.That(bag.Contains<Url>());
39: Assert.That(bag.Contains(typeof (Url)));
40: }
41:
42: [Test]
43: public void ShouldManageMoreThanOneObjectPerType()
44: { 45: SmartBag bag = new SmartBag();
46: bag.Add("key1", new Url("/1")); 47: bag.Add("key2", new Url("/2")); 48:
49: Assert.That(bag.Get<Url>("key1").Value, Is.EqualTo("/1")); 50: Assert.That(bag.Get<Url>("key2").Value, Is.EqualTo("/2")); 51: }
52:
53: [Test, ExpectedException(typeof (ArgumentException),
54: ExpectedMessage = "No object exists with key 'foobar'.")]
55: public void ShouldGetMeaningfulExceptionIfObjectDoesntExistByKey()
56: { 57: SmartBag bag = new SmartBag();
58: Url url = bag.Get<Url>("foobar"); 59: }
60:
61: [Test]
62: public void ShouldCountNumberOfObjectsOfGivenType()
63: { 64: SmartBag bag = new SmartBag();
65: Assert.That(bag.GetCount(typeof (Url)), Is.EqualTo(0));
66:
67: bag.Add("1", new Url("/1")); 68: bag.Add("2", new Url("/2")); 69: bag.Add("3", new Url("/3")); 70:
71: Assert.That(bag.GetCount(typeof (Url)), Is.EqualTo(3));
72: }
73:
74: [Test]
75: public void ShouldBeAbleToInitializeBagWithSeveralObjects()
76: { 77: Url url = new Url("/1"); 78: GenericIdentity identity = new GenericIdentity("name"); 79:
80: SmartBag bag = new SmartBag().Add(identity).Add(url);
81: Assert.That(bag.Get(typeof (GenericIdentity)), Is.EqualTo(identity));
82: Assert.That(bag.Get(typeof (Url)), Is.EqualTo(url));
83: }
84:
85: [Test]
86: public void ShouldHandleProxiedObjectsByType()
87: { 88: MailMessage stub = MockRepository.GenerateStub<MailMessage>();
89: SmartBag bag = new SmartBag();
90: bag.Add(stub);
91: MailMessage message = bag.Get<MailMessage>();
92:
93: Assert.That(message, Is.EqualTo(stub));
94: }
95:
96: [Test]
97: public void ShouldInitializeWithProxiesAndResolveCorrectly()
98: { 99: MailMessage messageProxy = MockRepository.GenerateStub<MailMessage>();
100: XmlDocument xmlDocumentProxy = MockRepository.GenerateStub<XmlDocument>();
101:
102: SmartBag bag = new SmartBag().Add(messageProxy).Add(xmlDocumentProxy);
103:
104: Assert.That(bag.Get<MailMessage>(), Is.EqualTo(messageProxy));
105: Assert.That(bag.Get<XmlDocument>(), Is.EqualTo(xmlDocumentProxy));
106: }
107:
108: [Test]
109: public void ShouldInitializeWithKeys()
110: { 111: SmartBag bag = new SmartBag().Add("key1", 2).Add("key2", 3); 112: Assert.That(bag.ContainsKey("key1")); 113: Assert.That(bag.ContainsKey("key2")); 114: }