Inheritance: IHandlerRepository
    public void cannot_add_a_null_resource_key()
    {
      var repo = new HandlerRepository();

      Executing(() => repo.AddResourceHandler(null, TypeSystems.Default.FromClr(typeof(Frodo))))
        .ShouldThrow<ArgumentNullException>();
    }
    public void enumerating_over_the_list_of_handlers_will_only_return_distinct_handlers()
    {
      var gilGalad = TypeSystems.Default.FromClr(typeof(GilGalad));

      var repo = new HandlerRepository();

      repo.AddResourceHandler("Narya", gilGalad);
      repo.AddResourceHandler("Vilya", gilGalad);

      repo.GetHandlerTypes().ShouldContain(gilGalad).Count().ShouldBe(1);
    }
        public void canoot_add_the_same_handler_type_twice_to_the_same_key()
        {
            var type = TypeSystems.Default.FromClr(typeof(string));
            var repo = new HandlerRepository();

            repo.AddResourceHandler("ring of power",type);

            Executing(() => repo.AddResourceHandler("ring of power", type))
                .ShouldThrow<ArgumentException>();

        }
    public void the_same_handler_can_be_registered_for_two_resources()
    {
      var gilGalad = TypeSystems.Default.FromClr(typeof(GilGalad));

      var repo = new HandlerRepository();

      repo.AddResourceHandler("Narya", gilGalad);
      repo.AddResourceHandler("Vilya", gilGalad);

      repo.GetHandlerTypesFor("Narya").FirstOrDefault().ShouldBe(gilGalad);
      repo.GetHandlerTypesFor("Vilya").FirstOrDefault().ShouldBe(gilGalad);
    }
    public void the_first_handler_is_returned_when_two_handlers_are_registered_for_the_same_key()
    {
      var handler1 = TypeSystems.Default.FromClr(typeof(Sauron));
      var handler2 = TypeSystems.Default.FromClr(typeof(Frodo));

      var repo = new HandlerRepository();

      repo.AddResourceHandler("ring of power", handler1);
      repo.AddResourceHandler("ring of power", handler2);

      repo.GetHandlerTypesFor("ring of power").FirstOrDefault()
        .ShouldBe(handler1);
    }
    public void two_handlers_can_be_registered_for_the_same_key()
    {
      var handler1 = TypeSystems.Default.FromClr(typeof(Sauron));
      var handler2 = TypeSystems.Default.FromClr(typeof(Frodo));

      var repo = new HandlerRepository();

      repo.AddResourceHandler("ring of power", handler1);
      repo.AddResourceHandler("ring of power", handler2);

      repo.GetHandlerTypesFor("ring of power")
        .ShouldContain(handler1)
        .ShouldContain(handler2);
    }