main
1namespace mars.rover.domain
2{
3 public class West : Heading
4 {
5 readonly Plateau plateau;
6
7 public West(Plateau plateau)
8 {
9 this.plateau = plateau;
10 }
11
12 public Heading turn_left()
13 {
14 return new South(plateau);
15 }
16
17 public Heading turn_right()
18 {
19 return new North(plateau);
20 }
21
22 public void move_forward_from(Coordinate x, Coordinate y)
23 {
24 if (plateau.within_x_axis(x.minus(1)))
25 x.decrement();
26 }
27
28 public bool Equals(Heading other)
29 {
30 if (null == other) return false;
31 return other is West;
32 }
33
34 public override string ToString()
35 {
36 return "W";
37 }
38
39 public override bool Equals(object obj)
40 {
41 return Equals(obj as Heading);
42 }
43
44 public override int GetHashCode()
45 {
46 return ToString().GetHashCode();
47 }
48 }
49}