Catching up after the holidays.
[kakapo:kakapo.git] / src / Matchers / EqualsArray.nqp
1 # Copyright (C) 2009, Austin Hastings. See accompanying LICENSE file, or 
2 # http://www.opensource.org/licenses/artistic-license-2.0.php for license.
3
4 module Matcher::EqualsArray;
5 # Matches if target is an array with specified contents.
6
7 use('Dumper');
8 Program::initload(:after('Matcher::TypeSafe'));
9
10 sub _initload() {
11         if our $_Initload_done { return 0; }
12         $_Initload_done := 1;
13                         
14         my $class_name := 'Matcher::EqualsArray';
15         
16         Class::SUBCLASS($class_name,
17                 'Matcher::TypeSafe'
18         );
19 }
20
21 method describe_self($description) {
22         return $description 
23                 ~ "an array equal to '" ~ self.value ~ "'";
24 }
25
26 method init(@children, %attributes) {
27         Matcher::init(self, @children, %attributes);
28         
29         unless +@children {
30                 DIE("You must provide a comparison value for 'EqualsArray' matcher.");
31         }
32         
33         self.value(@children.shift);
34 }
35
36 method matches_typesafe($item) {
37         my $result := Opcode::iseq(self.value, $item);
38         return $result;
39 }
40
41 method value(*@value)                   { self._ATTR('value', @value); }