???????????????????????????????????????“????????????‘FirstName’?????????????’IsChanged’”???????????FirstName???????????“IsChanged”??????????????????????????????????????

[TestMethod]
public voidPerson_FirstName_Set_PropertyChanged()
{
      varperson =newPerson("Adam"??"Smith");
      vareventAssert =newGranite.Testing.PropertyChangedEventAssert(person);
      person.FirstName ="Bob";
      eventAssert.SkipEvent();//this was IsChanged
      eventAssert.Expect("FirstName");
}


?????????????????????????????FirstName?????????????????????????API??IsChanged??FullName?????仯??

????[TestMethod]

public voidPerson_FullName_Changed_By_Setting_FirstName()
{
      varperson =newPerson("Adam"??"Smith");
      person.FirstName ="Bob";
      Assert.AreEqual("Bob Smith"?? person.FullName);
}

[TestMethod]
public voidPerson_IsChanged_Changed_By_Setting_FirstName() {       varperson =newPerson("Adam"??"Smith");
      person.FirstName ="Bob";
      Assert.IsTrue(person.IsChanged);
}

??????????????Щ???????????????????????????????

????[TestMethod]

public void Person_IsChanged_Property_Change_Notification_By_Setting_FirstName()
{
      var person = new Person("Adam"?? "Smith");
      var eventAssert = new PropertyChangedEventAssert(person);
      person.FirstName = "Bob";
      eventAssert.Expect("IsChanged");
}
[TestMethod]
public void Person_FullName_Property_Change_Notification_By_Setting_FirstName()
{
      var person = new Person("Adam"?? "Smith");
      var eventAssert = new PropertyChangedEventAssert(person);
      person.FirstName = "Bob";
      eventAssert.SkipEvent(); //this was IsChanged
      eventAssert.SkipEvent(); //this was FirstName
      eventAssert.Expect("FullName");
}
 


?????????????????????HasErrors????????ErrorsChanged?????

????[TestMethod]

public void Person_FirstName_Set_HasErrorsIsFalse()
{
          var person = new Person("Adam"?? "Smith");
          person.FirstName = "Bob";
          Assert.IsFalse(person.HasErrors);
}
[TestMethod]
public void Person_FirstName_Set_ErrorsChanged_Did_Not_Fire()
{
          var person = new Person("Adam"?? "Smith");
          var errorsChangedAssert = new ErrorsChangedEventAssert(person);
          person.FirstName = "Bob";
          errorsChangedAssert.ExpectNothing();
}