This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
AccelerationObserverTest { | |
testAccelerationObserverCanHandleRapidAcceleration() { | |
observer = create_acceleration_observer() // subclass responsibility | |
this_block { | |
observer.handle_acceleration_report(-50.ms2) | |
}.should execute_without_incident | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DetachmentSystemTest extends AccelerationObserverTest { | |
// I inherit testAccelerationObserverCanHandleRapidAcceleration() | |
create_acceleration_observer() { | |
DetachmentSystem.new(parachute = mock(Parachute)) | |
parachute.expects().detach() | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ParachuteTest { | |
testDetachingWhileLanded() { | |
parachute = Parachute.new(lander = mock(Lander)) | |
lander.stubs().has_landed().to_return(true) | |
this_block { | |
parachute.detach() | |
}.should execute_without_incident | |
} | |
testDetachingWhileNotLanded() { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
testAccelerometerCanRespondToFailureWhenReportingAcceleration() { | |
accelerometer = Accelerometer.new() | |
accelerometer.add_observer(observer = mock(AccelerationObserver)) | |
observer.stubs().handle_acceleration_report().to_raise(AnyException) | |
this_block { | |
accelerometer.report_acceleration(-50.ms2) | |
}.should raise(AnyException) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
testLanderDeceleratesRespondsToFailure() { | |
accelerometer = mock(Accelerometer) | |
lander = Lander.new(accelerometer) | |
accelerometer.stubs().report_acceleration().to_raise(AnyException) | |
this_block { | |
lander.decelerate() | |
}.should raise(AnyException) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
testDoNotDetachWhenTheLanderIsTooHighUp() { | |
altimeter = mock(Altimeter) | |
altimeter.stubs().altitude().to_return(5.m) | |
DetachmentSystem.new(parachute = mock(Parachute)) | |
parachute.expects(no_invocations_of).detach() | |
detachment_system.handle_acceleration_report(-50.ms2) | |
// ??? |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
testDoNotDetachWhenTheLanderIsTooHighUp() { | |
DetachmentSystem.new(parachute = mock(Parachute), altimeter = mock(Altimeter)) | |
altimeter.stubs().altitude().to_return(5.m) | |
parachute.expects(no_invocations_of).detach() | |
detachment_system.handle_acceleration_report(-50.ms2) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Controller.initialize() { | |
parachute = Parachute.new(lander) | |
detachment_system = DetachmentSystem.new(parachute) | |
accelerometer = Accelerometer.new() | |
lander = Lander.new(accelerometer, Altimeter.new()) | |
accelerometer.add_observer(detachment_system) | |
} | |
Parachute { | |
needs a lander |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
testOpenParachute() { | |
parachute = Parachute.new(lander = mock(Lander)) | |
lander.expects().decelerate() | |
parachute.open() | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
testAccelerometerCanReportRapidAcceleration() { | |
accelerometer = Accelerometer.new() | |
accelerometer.add_observer(observer = mock(AccelerationObserver)) | |
observer.expects().handle_acceleration_report(-50.ms2) | |
accelerometer.report_acceleration(-50.ms2) | |
} |