Bookmark Collection: Retrieving a bookmark that is not in the collection

Let’s see where we were…

  • Retrieve a Bookmark that is not in the collection, return null

The test for this looks like this:

public void

When I run this I get the following error:

BookmarkCollectionFixture.RetrieveABookmarkNotInCollection : System.Collections.Generic.KeyNotFoundException : The given key was not present in the dictionary.

Unfortunately it does not return null like I want it to. I guess I will have to write some code. I need to modify the Indexer to check to see if the label is in the collection. If not it should return null. Here’s the code: 

public Uri this[string label]
      if (!dictionary.ContainsKey(label)) return null

      return dictionary[label]; 

I compile and run and the tests pass. Let’s move on. The next post will address the following tests:

  • Add a Bookmark with a null label, expect ArgumentNullException
  • Add a Bookmark with a null URL, expect ArgumentNullException  

Surveying the rest of the tests in the test list indicates that there is not much left so I should be able to finish up the task in the next couple of posts.  

Comments (2)

  1. This an extremely off-topic comment, *but* I have never understood why the library was written this way. In this code

    if (!dictionary.ContainsKey(label))

    return null;

    return dictionary[label];

    The lookup is actually performed twice for objects in the dictionary. What a horrible performance penalty! The STL and MFC approaches seems much more sane in that regard.

  2. RGabo says:

    Interesting read ;), I just came through.

    My question is, how many of us would rather write:

    if (!dictionary.ContainsKey(label))

    return null;


    return dictionary[label];

    It makes no real difference, but for me, it feels more ‘right’.

    I want to return null if dictionary doesn’t contain the key, _else_ I want to return the value.

    Anybody else? 🙂