       didRemove = false
     }
     self.hub.removeNotification(self.notificationName, sender: self)
+    self.hub.postNotificationName(self.notificationName, sender: nil, userInfo: nil)
+    if didRemove { expectation.fulfill() }
+    self.waitForExpectationsWithTimeout(1, nil)
+    
+  }
+
+  func testRemoveDefaultNotificationWithoutSender() {
+    var expectation = self.expectationWithDescription(self.notificationName)
+    var didRemove = false
+    self.hub.addObserverForName(self.notificationName, sender: self) { notification in
+      didRemove = true
+    }
+    self.hub.removeNotification(self.notificationName, sender: nil)
+    self.hub.postNotificationName(self.notificationName, sender: self, userInfo: nil)
+    if didRemove  { expectation.fulfill() }
+    self.waitForExpectationsWithTimeout(1, nil)
+    
+  }
+  
+  
+  func testRemoveDefaultNotificationWithSender() {
+    var expectation = self.expectationWithDescription(self.notificationName)
+    var didRemove = true
+    self.hub.addObserverForName(self.notificationName, sender: self) { notification in
+      didRemove = false
+    }
+    self.hub.removeNotification(self.notificationName, sender: self)
     self.hub.postNotificationName(self.notificationName, sender: self, userInfo: nil)
     if didRemove { expectation.fulfill() }
     self.waitForExpectationsWithTimeout(1, nil)



class NotificationTests: XCTestCase {
  let hub = NotificationHubDefault
  let notificationName = "notificationName"
  var notificationUserInfo = [String:Any]()
  override func setUp() {
    super.setUp()
    self.notificationUserInfo["key"] = 5

  }
    
  override func tearDown() {

  func testPostDefaultNotificationWithSender() {
    var expectation = self.expectationWithDescription(self.notificationName)

    self.hub.addObserverForName(self.notificationName, sender: self) { notification in
      XCTAssertNotNil(notification)
      XCTAssertEqual(self.notificationName, notification.name)
      XCTAssertNotNil(notification.sender)
