Sorry for the diversions and the delay. The first thing I need to is choose the first test. It really does not matter which test is chosen first, really it doesn't. I have to finish all of the tests to finish the task. There are a couple of choices. I could choose the first test, "Count == 0". This test is very simple to implement and would get me started quickly. I could choose "Add a Bookmark, Retrieve using the label". This test also would not be hard to implement and really represents the essance of the problem. For this example, I am going to choose the "Count == 0" test because I want the simplest test to just get started. By the way, I am going to implement the BookmarkCollection in VS 2005. Here is the first test:

using System;
using
NUnit.Framework;

[TestFixture]
public class
BookmarkCollectionFixture
{
   [
Test
]
   
public void
UponCreationCountIsZero()
   {
      
BookmarkCollection collection = new BookmarkCollection
();
      
Assert
.AreEqual(0, collection.Count);
   }
}

In order to get the test to fail here is the implementation:

using System;

public class
BookmarkCollection
{
   
public int
Count
   {
      
get { return
-1; }
   }
}

When I run this test in NUnit I get the following result:

BookmarkCollectionFixture.UponCreationCountIsZero : 
   expected:<0>
    but was:<-1>

Now let's choose an implementation to get the test to pass:

using System;

public class BookmarkCollection
{
   
public int Count
   {
      
get { return 0; }
   }
}

When I run NUnit again the test passes. This implementation may seem ridculous but it really is the simplest design that is needed to pass the test. This is an example of a technique Kent Beck calls: "Fake It ('Til You Make It)". This technique helps us pass the test until we know of a better solution. That's all for the first test.