public class MockTemplateMethodConcreteClass : TemplateMethodClass {
bool primitiveOperation1Called, primitiveOperation2Called;
protected override void PrimitiveOperation1() {
primitiveOperation1Called = true;
}
protected override void PrimitiveOperation2() {
primitiveOperation2Called = true;
}
public bool PrimitiveOperation1Called {
get { return primitiveOperation1Called; }
}
public bool PrimitiveOperation2Called {
get { return primitiveOperation2Called; }
}
}
[TestFixture]
public class TemplateMethodClassTestFixture {
TemplateMethodClass templateMethodClass;
[SetUp]
public void SetUp() {
templateMethodClass = new MockTemplateMethodConcreteClass();
}
[Test]
public void TemplateMethodCallsBothPrimitives() {
templateMethodClass.TemplateMethod();
Assert.IsTrue(((MockTemplateMethodConcreteClass)templateMethodClass).PrimitiveOperation1Called,
);
Assert.IsTrue(((MockTemplateMethodConcreteClass)templateMethodClass).PrimitiveOperation2Called,
);
}
}