diff options
Diffstat (limited to 'docs/teaching/exercises/answers/Answer2e.java')
-rw-r--r-- | docs/teaching/exercises/answers/Answer2e.java | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/docs/teaching/exercises/answers/Answer2e.java b/docs/teaching/exercises/answers/Answer2e.java index 53245b4d0..43112ec89 100644 --- a/docs/teaching/exercises/answers/Answer2e.java +++ b/docs/teaching/exercises/answers/Answer2e.java @@ -14,11 +14,21 @@ package answers; import figures.*; -public aspect Answer2e { - pointcut checkpoint(Box box): - call(void move(int, int)) && target(box); +import java.awt.Rectangle; - after(Box box) returning: checkpoint(box) { - box.checkBoxness(); +aspect Answer2e { + void around(Point p, int dx, int dy): + target(fe) && call(void move(int, int)) && args(dx, dy) { + int preX = p.getX(); + int preY = p.getY(); + + proceed(p, dx, dy); + + int postX = p.getX(); + int postY = p.getY(); + + if ((postX != preX + dx) || (postY != preY + dy)) { + throw new IllegalStateException("point didn't move properly"); + } } } |