public void When_binding_a_form_to_an_object_that_implements_inotifypropertychanged_and_the_form_data_changes()
{
var binder = new Binder();
var form = new PostWithOptionsForm();
var post = NeededObjectsFactory.CreateNotifyingPost();
post.PublishStates.Add(new PublishState { State = "Published" });
post.PublishStates.Add(new PublishState { State = "Reviewed" });
post.PublishStates.Add(new PublishState { State = "Pending Review" });
post.PublishStates.Add(new PublishState { State = "Draft" });
post.PublishState = post.PublishStates[2];
binder.Bind(post, form, new[] { new BindaAlias("Location", "PostLocation") });
CreateControl(form);
form.Title.Text = "New Title";
form.Author.Text = "New Author";
form.PostLocation.Text = "New Location";
form.Body.Text = "New Body";
form.Date.Value = new DateTime(1979, 12, 31);
form.PublishState.SelectedItem = post.PublishStates[3];
form.HitCount.Value = (decimal)Math.Round(Math.PI, 12);
Assert.That(post.Title, Is.EqualTo("New Title"));
Assert.That(post.Author, Is.EqualTo("New Author"));
Assert.That(post.Location, Is.EqualTo("New Location"));
Assert.That(post.Body, Is.EqualTo("New Body"));
Assert.That(post.Date, Is.EqualTo(new DateTime(1979, 12, 31)));
Assert.That(post.PublishState, Is.EqualTo(post.PublishStates[3]));
Assert.That(post.HitCount, Is.EqualTo((decimal)Math.Round(Math.PI, 12)));
}