Skip to content

Instantly share code, notes, and snippets.

View jbrains's full-sized avatar

J. B. Rainsberger jbrains

View GitHub Profile
AccelerationObserverTest {
testAccelerationObserverCanHandleRapidAcceleration() {
observer = create_acceleration_observer() // subclass responsibility
this_block {
observer.handle_acceleration_report(-50.ms2)
}.should execute_without_incident
}
}
DetachmentSystemTest extends AccelerationObserverTest {
// I inherit testAccelerationObserverCanHandleRapidAcceleration()
create_acceleration_observer() {
DetachmentSystem.new(parachute = mock(Parachute))
parachute.expects().detach()
}
}
ParachuteTest {
testDetachingWhileLanded() {
parachute = Parachute.new(lander = mock(Lander))
lander.stubs().has_landed().to_return(true)
this_block {
parachute.detach()
}.should execute_without_incident
}
testDetachingWhileNotLanded() {
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)
}
testLanderDeceleratesRespondsToFailure() {
accelerometer = mock(Accelerometer)
lander = Lander.new(accelerometer)
accelerometer.stubs().report_acceleration().to_raise(AnyException)
this_block {
lander.decelerate()
}.should raise(AnyException)
}
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)
// ???
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)
}
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
testOpenParachute() {
parachute = Parachute.new(lander = mock(Lander))
lander.expects().decelerate()
parachute.open()
}
testAccelerometerCanReportRapidAcceleration() {
accelerometer = Accelerometer.new()
accelerometer.add_observer(observer = mock(AccelerationObserver))
observer.expects().handle_acceleration_report(-50.ms2)
accelerometer.report_acceleration(-50.ms2)
}