mustang 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. data/README.md +11 -1
  2. data/Rakefile +1 -1
  3. data/TODO.md +2 -1
  4. data/ext/v8/extconf.rb +3 -1
  5. data/ext/v8/v8_array.cpp +2 -0
  6. data/ext/v8/v8_context.cpp +32 -5
  7. data/ext/v8/v8_date.cpp +1 -0
  8. data/ext/v8/v8_external.cpp +1 -0
  9. data/ext/v8/v8_function.cpp +3 -0
  10. data/ext/v8/v8_integer.cpp +1 -0
  11. data/ext/v8/v8_macros.h +6 -0
  12. data/ext/v8/v8_main.cpp +3 -1
  13. data/ext/v8/v8_number.cpp +1 -0
  14. data/ext/v8/v8_object.cpp +2 -0
  15. data/ext/v8/v8_regexp.cpp +1 -0
  16. data/ext/v8/v8_string.cpp +1 -0
  17. data/ext/v8/v8_value.cpp +2 -0
  18. data/lib/mustang.rb +20 -27
  19. data/lib/mustang/context.rb +0 -26
  20. data/lib/{core_ext → mustang/core_ext}/class.rb +1 -1
  21. data/lib/{core_ext → mustang/core_ext}/object.rb +2 -4
  22. data/lib/{core_ext → mustang/core_ext}/symbol.rb +0 -0
  23. data/lib/{support → mustang/support}/delegated.rb +0 -0
  24. data/lib/mustang/v8/array.rb +21 -0
  25. data/lib/mustang/v8/context.rb +15 -0
  26. data/lib/mustang/v8/date.rb +20 -0
  27. data/lib/mustang/v8/error.rb +17 -0
  28. data/lib/mustang/v8/external.rb +16 -0
  29. data/lib/mustang/v8/function.rb +13 -0
  30. data/lib/mustang/v8/integer.rb +16 -0
  31. data/lib/mustang/v8/number.rb +16 -0
  32. data/lib/mustang/v8/object.rb +66 -0
  33. data/lib/mustang/v8/regexp.rb +23 -0
  34. data/lib/mustang/v8/string.rb +27 -0
  35. data/mustang.gemspec +1 -1
  36. data/spec/{core_ext → mustang/core_ext}/class_spec.rb +3 -3
  37. data/spec/{core_ext → mustang/core_ext}/object_spec.rb +3 -3
  38. data/spec/{core_ext → mustang/core_ext}/symbol_spec.rb +1 -1
  39. data/spec/{v8 → mustang/v8}/array_spec.rb +12 -5
  40. data/spec/{v8 → mustang/v8}/cast_spec.rb +10 -10
  41. data/spec/{v8 → mustang/v8}/context_spec.rb +52 -6
  42. data/spec/{v8 → mustang/v8}/data_spec.rb +4 -4
  43. data/spec/{v8 → mustang/v8}/date_spec.rb +12 -5
  44. data/spec/{v8 → mustang/v8}/empty_spec.rb +4 -4
  45. data/spec/{v8 → mustang/v8}/errors_spec.rb +9 -9
  46. data/spec/{v8 → mustang/v8}/external_spec.rb +14 -7
  47. data/spec/{v8 → mustang/v8}/function_spec.rb +20 -13
  48. data/spec/{v8 → mustang/v8}/integer_spec.rb +13 -6
  49. data/spec/{v8 → mustang/v8}/main_spec.rb +2 -2
  50. data/spec/{v8 → mustang/v8}/null_spec.rb +4 -4
  51. data/spec/{v8 → mustang/v8}/number_spec.rb +5 -5
  52. data/spec/{v8 → mustang/v8}/object_spec.rb +13 -6
  53. data/spec/mustang/v8/primitive_spec.rb +9 -0
  54. data/spec/{v8 → mustang/v8}/regexp_spec.rb +12 -5
  55. data/spec/{v8 → mustang/v8}/string_spec.rb +12 -5
  56. data/spec/{v8 → mustang/v8}/undefined_spec.rb +4 -4
  57. data/spec/mustang/v8/value_spec.rb +222 -0
  58. data/spec/spec_helper.rb +1 -1
  59. metadata +91 -62
  60. data/lib/v8/array.rb +0 -21
  61. data/lib/v8/context.rb +0 -13
  62. data/lib/v8/date.rb +0 -20
  63. data/lib/v8/error.rb +0 -15
  64. data/lib/v8/external.rb +0 -16
  65. data/lib/v8/function.rb +0 -11
  66. data/lib/v8/integer.rb +0 -16
  67. data/lib/v8/number.rb +0 -16
  68. data/lib/v8/object.rb +0 -66
  69. data/lib/v8/regexp.rb +0 -23
  70. data/lib/v8/string.rb +0 -27
  71. data/spec/v8/primitive_spec.rb +0 -9
  72. data/spec/v8/value_spec.rb +0 -215
@@ -1,18 +1,25 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
- describe V8::Date do
4
- subject { V8::Date }
3
+ describe Mustang::V8::Date do
4
+ subject { Mustang::V8::Date }
5
5
  setup_context
6
6
 
7
7
  before do
8
8
  @now = Time.now
9
9
  end
10
10
 
11
- it "inherits V8::Value" do
12
- subject.new(@now).should be_kind_of(V8::Value)
11
+ it "inherits Mustang::V8::Value" do
12
+ subject.new(@now).should be_kind_of(Mustang::V8::Value)
13
13
  end
14
14
 
15
15
  describe ".new" do
16
+ context "when no context entered" do
17
+ it "should raise error" do
18
+ Mustang::V8::Context.exit_all!
19
+ expect { subject.new(@now) }.to raise_error(RuntimeError, "can't create V8 object without entering into context")
20
+ end
21
+ end
22
+
16
23
  it "creates new v8 date based on passed value" do
17
24
  subject.new(@now).to_i.should be_eql(@now.to_i)
18
25
  end
@@ -1,10 +1,10 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
- describe V8::Empty do
3
+ describe Mustang::V8::Empty do
4
4
  setup_context
5
5
 
6
- it "is kind of V8::EmptyClass" do
7
- subject.should be_kind_of(V8::EmptyClass)
6
+ it "is kind of Mustang::V8::EmptyClass" do
7
+ subject.should be_kind_of(Mustang::V8::EmptyClass)
8
8
  end
9
9
 
10
10
  describe "#null?" do
@@ -1,20 +1,20 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
3
  describe "Exception handling" do
4
4
  setup_context
5
5
 
6
6
  it "returns v8 error object when JS code is broken" do
7
7
  exc = cxt.eval("broken$code", "<eval>")
8
- exc.should be_kind_of(V8::Error)
8
+ exc.should be_kind_of(Mustang::V8::Error)
9
9
  exc.should be_error
10
10
  end
11
11
  end
12
12
 
13
- describe V8::Error do
13
+ describe Mustang::V8::Error do
14
14
  setup_context
15
15
 
16
- it "inherits V8::Data" do
17
- subject.should be_kind_of(V8::Data)
16
+ it "inherits Mustang::V8::Data" do
17
+ subject.should be_kind_of(Mustang::V8::Data)
18
18
  end
19
19
 
20
20
  it "#reference_error? returns false" do
@@ -101,7 +101,7 @@ describe "Returned error" do
101
101
  end
102
102
  end
103
103
 
104
- describe V8::ReferenceError do
104
+ describe Mustang::V8::ReferenceError do
105
105
  it "#reference_error? returns true" do
106
106
  subject.should be_reference_error
107
107
  end
@@ -111,7 +111,7 @@ describe V8::ReferenceError do
111
111
  end
112
112
  end
113
113
 
114
- describe V8::SyntaxError do
114
+ describe Mustang::V8::SyntaxError do
115
115
  it "#syntax_error? returns true" do
116
116
  subject.should be_syntax_error
117
117
  end
@@ -121,7 +121,7 @@ describe V8::SyntaxError do
121
121
  end
122
122
  end
123
123
 
124
- describe V8::RangeError do
124
+ describe Mustang::V8::RangeError do
125
125
  it "#range_error? returns true" do
126
126
  subject.should be_range_error
127
127
  end
@@ -131,7 +131,7 @@ describe V8::RangeError do
131
131
  end
132
132
  end
133
133
 
134
- describe V8::TypeError do
134
+ describe Mustang::V8::TypeError do
135
135
  it "#type_error? returns true" do
136
136
  subject.should be_type_error
137
137
  end
@@ -1,18 +1,25 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
2
  require 'stringio'
3
3
 
4
- describe V8::External do
5
- subject { V8::External }
4
+ describe Mustang::V8::External do
5
+ subject { Mustang::V8::External }
6
6
  setup_context
7
7
 
8
- it "inherits V8::Value" do
9
- subject.new(StringIO.new).should be_kind_of(V8::Value)
8
+ it "inherits Mustang::V8::Value" do
9
+ subject.new(StringIO.new).should be_kind_of(Mustang::V8::Value)
10
10
  end
11
11
 
12
12
  describe ".new" do
13
+ context "when no context entered" do
14
+ it "should raise error" do
15
+ Mustang::V8::Context.exit_all!
16
+ expect { Mustang::V8::External.new(StringIO.new) }.to raise_error(RuntimeError, "can't create V8 object without entering into context")
17
+ end
18
+ end
19
+
13
20
  it "creates new v8 external" do
14
21
  obj = StringIO.new
15
- subject.new(obj).should be_kind_of(V8::External)
22
+ subject.new(obj).should be_kind_of(Mustang::V8::External)
16
23
  end
17
24
  end
18
25
 
@@ -36,7 +43,7 @@ describe V8::External do
36
43
  def bar; return 'bar'; end
37
44
  end
38
45
 
39
- obj = V8::External.new(Bar.new)
46
+ obj = Mustang::V8::External.new(Bar.new)
40
47
  obj.delegate.bar.should == 'bar'
41
48
  obj.bar.should == 'bar'
42
49
  end
@@ -1,14 +1,21 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
- describe V8::Function do
4
- subject { V8::Function }
3
+ describe Mustang::V8::Function do
4
+ subject { Mustang::V8::Function }
5
5
  setup_context
6
6
 
7
- it "inherits V8::Object" do
8
- subject.new(lambda { "foo" }).should be_kind_of(V8::Object)
7
+ it "inherits Mustang::V8::Object" do
8
+ subject.new(lambda { "foo" }).should be_kind_of(Mustang::V8::Object)
9
9
  end
10
10
 
11
11
  describe ".new" do
12
+ context "when no context entered" do
13
+ it "should raise error" do
14
+ Mustang::V8::Context.exit_all!
15
+ expect { subject.new(lambda {}) }.to raise_error(RuntimeError, "can't create V8 object without entering into context")
16
+ end
17
+ end
18
+
12
19
  context "when given proc/lambda" do
13
20
  it "creates new function pointed to it" do
14
21
  func = subject.new(lambda {|bar| "foo#{bar}"})
@@ -84,10 +91,10 @@ describe V8::Function do
84
91
 
85
92
  context "when wrong numbers of arguments given" do
86
93
  it "returns proper error" do
87
- func = V8::Function.new(lambda {|arg| return arg })
94
+ func = Mustang::V8::Function.new(lambda {|arg| return arg })
88
95
  func.call().should be_error
89
96
  func.call(1).should == 1
90
- func = V8::Function.new(lambda {|*args| return args.size })
97
+ func = Mustang::V8::Function.new(lambda {|*args| return args.size })
91
98
  func.call().should == 0
92
99
  func.call(1,2,3).should == 3
93
100
  end
@@ -96,7 +103,7 @@ describe V8::Function do
96
103
 
97
104
  describe "#bind" do
98
105
  it "binds function with given object" do
99
- func = V8::Function.new(lambda{})
106
+ func = Mustang::V8::Function.new(lambda{})
100
107
  func.bind('foo')
101
108
  func.receiver.should == 'foo'
102
109
  end
@@ -105,14 +112,14 @@ describe V8::Function do
105
112
  describe "#receiver" do
106
113
  context "when no object bound to function" do
107
114
  it "returns nil" do
108
- func = V8::Function.new(lambda{})
115
+ func = Mustang::V8::Function.new(lambda{})
109
116
  func.receiver.should_not be
110
117
  end
111
118
  end
112
119
 
113
120
  context "when object bound to function" do
114
121
  it "returns it" do
115
- func = V8::Function.new(lambda{})
122
+ func = Mustang::V8::Function.new(lambda{})
116
123
  func.bind(1)
117
124
  func.receiver.should == 1
118
125
  end
@@ -121,7 +128,7 @@ describe V8::Function do
121
128
 
122
129
  describe "#name= and #name" do
123
130
  it "sets and gets function's unique name" do
124
- func = V8::Function.new(lambda{})
131
+ func = Mustang::V8::Function.new(lambda{})
125
132
  func.name = 'foo'
126
133
  func.name.should == 'foo'
127
134
  end
@@ -131,7 +138,7 @@ describe V8::Function do
131
138
  context "when function has been created from ruby proc/lambda/method" do
132
139
  it "returns it" do
133
140
  proc = Proc.new {}
134
- func = V8::Function.new(proc)
141
+ func = Mustang::V8::Function.new(proc)
135
142
  func.origin.should == proc
136
143
  end
137
144
  end
@@ -148,7 +155,7 @@ describe V8::Function do
148
155
  context "when function has been created from ruby proc/lambda/method" do
149
156
  it "returns it" do
150
157
  proc = Proc.new {}
151
- func = V8::Function.new(proc)
158
+ func = Mustang::V8::Function.new(proc)
152
159
  func.to_proc.should == proc
153
160
  end
154
161
  end
@@ -1,15 +1,22 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
- describe V8::Integer do
4
- subject { V8::Integer }
3
+ describe Mustang::V8::Integer do
4
+ subject { Mustang::V8::Integer }
5
5
  setup_context
6
6
 
7
- it "inherits V8::Number" do
8
- pending "Needs to separate V8::Number"
9
- subject.new(10).should be_kind_of(V8::Number)
7
+ it "inherits Mustang::V8::Number" do
8
+ pending "Needs to separate Mustang::V8::Number"
9
+ subject.new(10).should be_kind_of(Mustang::V8::Number)
10
10
  end
11
11
 
12
12
  describe ".new" do
13
+ context "when no context entered" do
14
+ it "should raise error" do
15
+ Mustang::V8::Context.exit_all!
16
+ expect { subject.new(1) }.to raise_error(RuntimeError, "can't create V8 object without entering into context")
17
+ end
18
+ end
19
+
13
20
  it "creates new v8 integer based on passed value" do
14
21
  subject.new(10).should == 10
15
22
  subject.new(-10).should == -10
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
- describe V8 do
3
+ describe Mustang::V8 do
4
4
  it "responds to .version" do
5
5
  subject.should respond_to(:version)
6
6
  subject.version.should =~ /^\d.\d.\d$/
@@ -1,10 +1,10 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
- describe V8::Null do
3
+ describe Mustang::V8::Null do
4
4
  setup_context
5
5
 
6
- it "is kind of V8::NullClass" do
7
- subject.should be_kind_of(V8::NullClass)
6
+ it "is kind of Mustang::V8::NullClass" do
7
+ subject.should be_kind_of(Mustang::V8::NullClass)
8
8
  end
9
9
 
10
10
  describe "#null?" do
@@ -1,11 +1,11 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
- describe V8::Number do
4
- subject { V8::Number }
3
+ describe Mustang::V8::Number do
4
+ subject { Mustang::V8::Number }
5
5
  setup_context
6
6
 
7
- it "inherits V8::Primitive" do
8
- subject.new(10.5).should be_kind_of(V8::Primitive)
7
+ it "inherits Mustang::V8::Primitive" do
8
+ subject.new(10.5).should be_kind_of(Mustang::V8::Primitive)
9
9
  end
10
10
 
11
11
  describe ".new" do
@@ -1,16 +1,23 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
- describe V8::Object do
4
- subject { V8::Object }
3
+ describe Mustang::V8::Object do
4
+ subject { Mustang::V8::Object }
5
5
  setup_context
6
6
 
7
- it "inherits V8::Value" do
8
- subject.new(:foo => 1).should be_kind_of(V8::Value)
7
+ it "inherits Mustang::V8::Value" do
8
+ subject.new(:foo => 1).should be_kind_of(Mustang::V8::Value)
9
9
  end
10
10
 
11
11
  describe ".new" do
12
+ context "when no context entered" do
13
+ it "should raise error" do
14
+ Mustang::V8::Context.exit_all!
15
+ expect { subject.new(1) }.to raise_error(RuntimeError, "can't create V8 object without entering into context")
16
+ end
17
+ end
18
+
12
19
  it "creates new v8 object" do
13
- subject.new.should be_kind_of(V8::Object)
20
+ subject.new.should be_kind_of(Mustang::V8::Object)
14
21
  end
15
22
 
16
23
  context "when hash with properties passed" do
@@ -0,0 +1,9 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe Mustang::V8::Primitive do
4
+ setup_context
5
+
6
+ it "inherits Mustang::V8::Value" do
7
+ Mustang::V8::Primitive.new(0).should be_kind_of(Mustang::V8::Value)
8
+ end
9
+ end
@@ -1,14 +1,21 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
- describe V8::Regexp do
4
- subject { V8::Regexp }
3
+ describe Mustang::V8::Regexp do
4
+ subject { Mustang::V8::Regexp }
5
5
  setup_context
6
6
 
7
- it "inherits V8::Number" do
8
- subject.new(/foo(bar)?/).should be_kind_of(V8::Value)
7
+ it "inherits Mustang::V8::Number" do
8
+ subject.new(/foo(bar)?/).should be_kind_of(Mustang::V8::Value)
9
9
  end
10
10
 
11
11
  describe ".new" do
12
+ context "when no context entered" do
13
+ it "should raise error" do
14
+ Mustang::V8::Context.exit_all!
15
+ expect { subject.new(/foo/) }.to raise_error(RuntimeError, "can't create V8 object without entering into context")
16
+ end
17
+ end
18
+
12
19
  context "when ruby regexp passed" do
13
20
  it "creates new v8 regexp based on it" do
14
21
  subject.new(/foo(bar)?/im).should == /foo(bar)?/im
@@ -1,15 +1,22 @@
1
1
  # -*- coding: utf-8 -*-
2
- require File.dirname(__FILE__) + '/../spec_helper'
2
+ require File.dirname(__FILE__) + '/../../spec_helper'
3
3
 
4
- describe V8::String do
5
- subject { V8::String }
4
+ describe Mustang::V8::String do
5
+ subject { Mustang::V8::String }
6
6
  setup_context
7
7
 
8
- it "inherits V8::Primitive" do
9
- subject.new("foo").should be_kind_of(V8::Primitive)
8
+ it "inherits Mustang::V8::Primitive" do
9
+ subject.new("foo").should be_kind_of(Mustang::V8::Primitive)
10
10
  end
11
11
 
12
12
  describe ".new" do
13
+ context "when no context entered" do
14
+ it "should raise error" do
15
+ Mustang::V8::Context.exit_all!
16
+ expect { subject.new("foo") }.to raise_error(RuntimeError, "can't create V8 object without entering into context")
17
+ end
18
+ end
19
+
13
20
  it "creates new v8 string based on passed value" do
14
21
  subject.new("foo").to_s.should == "foo"
15
22
  end
@@ -1,10 +1,10 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
- describe V8::Undefined do
3
+ describe Mustang::V8::Undefined do
4
4
  setup_context
5
5
 
6
- it "is kind of V8::UndefinedClass" do
7
- subject.should be_kind_of(V8::UndefinedClass)
6
+ it "is kind of Mustang::V8::UndefinedClass" do
7
+ subject.should be_kind_of(Mustang::V8::UndefinedClass)
8
8
  end
9
9
 
10
10
  describe "#null?" do
@@ -0,0 +1,222 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe Mustang::V8::Value do
4
+ subject { Mustang::V8::Value }
5
+ setup_context
6
+
7
+ it "inherits Mustang::V8::Data" do
8
+ subject.new(Object.new).should be_kind_of(Mustang::V8::Data)
9
+ end
10
+
11
+ describe ".new" do
12
+ context "when no context entered" do
13
+ it "should raise error" do
14
+ Mustang::V8::Context.exit_all!
15
+ expect { subject.new(Object.new) }.to raise_error(RuntimeError, "can't create V8 object without entering into context")
16
+ end
17
+ end
18
+
19
+ it "creates new v8 value" do
20
+ subject.new(Object.new).should be_kind_of(Mustang::V8::Value)
21
+ end
22
+ end
23
+
24
+ describe "#object?" do
25
+ it "returns true when value is an instance of Mustang::V8::Object" do
26
+ Mustang::V8::Object.new.should be_object
27
+ end
28
+
29
+ it "returns false when value is not an instance of Mustang::V8::Object" do
30
+ Mustang::V8::External.new(Object.new).should_not be_object
31
+ end
32
+
33
+ it "is aliased with #obj?" do
34
+ Mustang::V8::Object.new.should be_obj
35
+ end
36
+ end
37
+
38
+ describe "#integer?" do
39
+ it "returns true when value is an instance of Mustang::V8::Integer" do
40
+ Mustang::V8::Integer.new(10).should be_integer
41
+ end
42
+
43
+ it "returns false when value is not an instance of Mustang::V8::Integer" do
44
+ subject.new(Object.new).should_not be_integer
45
+ end
46
+
47
+ it "is aliased with #int?" do
48
+ Mustang::V8::Integer.new(10).should be_int
49
+ end
50
+ end
51
+
52
+ describe "#number?" do
53
+ it "returns true when value is an instance of Mustang::V8::Number" do
54
+ Mustang::V8::Number.new(10).should be_number
55
+ end
56
+
57
+ it "returns false when value is not an instance of Mustang::V8::Number" do
58
+ subject.new(Object.new).should_not be_number
59
+ end
60
+
61
+ it "is aliased with #num?" do
62
+ Mustang::V8::Number.new(10).should be_num
63
+ end
64
+ end
65
+
66
+ describe "#string?" do
67
+ it "returns true when value is an instance of Mustang::V8::String" do
68
+ Mustang::V8::String.new("foo").should be_string
69
+ end
70
+
71
+ it "returns false when value is not an instance of Mustang::V8::String" do
72
+ subject.new(Object.new).should_not be_string
73
+ end
74
+
75
+ it "is aliased with #str?" do
76
+ Mustang::V8::String.new("foo").should be_str
77
+ end
78
+ end
79
+
80
+ describe "#external?" do
81
+ it "returns true when value is an instance of Mustang::V8::External" do
82
+ Mustang::V8::External.new(Object.new).should be_external
83
+ end
84
+
85
+ it "returns false when value is not an instance of Mustang::V8::External" do
86
+ Mustang::V8::Integer.new(10).should_not be_external
87
+ end
88
+ end
89
+
90
+ describe "#array?" do
91
+ it "returns true when value is an instance of Mustang::V8::Array" do
92
+ Mustang::V8::Array.new(1,2,3).should be_array
93
+ end
94
+
95
+ it "returns false when value is not an instance of Mustang::V8::Array" do
96
+ subject.new(Object.new).should_not be_array
97
+ end
98
+
99
+ it "is aliased with #ary?" do
100
+ Mustang::V8::Array.new.should be_ary
101
+ end
102
+ end
103
+
104
+ describe "#function?" do
105
+ it "returns true when value is an instance of Mustang::V8::Function" do
106
+ Mustang::V8::Function.new(proc {}).should be_function
107
+ end
108
+
109
+ it "returns false when value is not an instance of Mustang::V8::Function" do
110
+ Mustang::V8::Integer.new(1).should_not be_function
111
+ end
112
+
113
+ it "is aliased with #func?" do
114
+ Mustang::V8::Function.new(proc {}).should be_func
115
+ end
116
+ end
117
+
118
+ describe "#regexp?" do
119
+ it "returns true when value is an instance of Mustang::V8::Regexp" do
120
+ Mustang::V8::Regexp.new(/foo/).should be_regexp
121
+ end
122
+
123
+ it "returns false when value is not an instance of Mustang::V8::Regexp" do
124
+ Mustang::V8::Integer.new(1).should_not be_regexp
125
+ end
126
+
127
+ it "is aliased with #regex?" do
128
+ Mustang::V8::Regexp.new(/foo/).should be_regex
129
+ end
130
+ end
131
+
132
+ describe "#date?" do
133
+ it "returns true when value is an instance of Mustang::V8::Date" do
134
+ Mustang::V8::Date.new(Time.now).should be_date
135
+ end
136
+
137
+ it "returns false when value is not an instance of Mustang::V8::Date" do
138
+ Mustang::V8::Integer.new(1).should_not be_date
139
+ end
140
+ end
141
+
142
+ describe "#to_integer" do
143
+ it "returns V8 integer representation of value" do
144
+ val = Mustang::V8::Integer.new(10)
145
+ subject.new(val).to_integer.should == val
146
+ end
147
+ end
148
+
149
+ describe "#to_string" do
150
+ it "returns V8 string representation of value" do
151
+ val = Mustang::V8::String.new("foo")
152
+ subject.new(val).to_string.should == val
153
+ end
154
+ end
155
+
156
+ describe "#to_number" do
157
+ it "returns V8 number representation of value" do
158
+ val = Mustang::V8::Number.new(10.5)
159
+ subject.new(val).to_number.should == val
160
+ end
161
+ end
162
+
163
+ describe "#to_object" do
164
+ it "returns V8 object representation of value" do
165
+ val = Mustang::V8::Object.new(:foo => 1)
166
+ subject.new(val).to_object.should == val
167
+ end
168
+ end
169
+
170
+ describe "#to_boolean" do
171
+ it "return V8 boolean representation of value" do
172
+ Mustang::V8::Object.new(:foo => 1).to_boolean.should be_true
173
+ Mustang::V8::Integer.new(0).to_boolean.should be_false
174
+ end
175
+ end
176
+
177
+ describe "#===" do
178
+ it "returns true when compared objects are strictly the same" do
179
+ obj = Mustang::V8::Object.new(:foo => 1)
180
+ val = subject.new(obj)
181
+ val.should === obj
182
+ end
183
+
184
+ it "returns false when compared objects are strictly different" do
185
+ obj = Mustang::V8::Object.new(:foo => 1)
186
+ val = subject.new(Mustang::V8::Array.new)
187
+ val.should_not === obj
188
+ end
189
+ end
190
+
191
+ describe "#==" do
192
+ it "returns true when compared objects are the same" do
193
+ obj1 = Mustang::V8::Integer.new(1)
194
+ obj2 = Mustang::V8::Integer.new(1)
195
+ subject.new(obj1).should == obj2
196
+ end
197
+
198
+ it "returns false when compared objects are different" do
199
+ obj1 = Mustang::V8::Object.new(:foo => 1)
200
+ obj2 = Mustang::V8::Object.new(:bar => 1)
201
+ subject.new(obj1).should_not == obj2
202
+ end
203
+ end
204
+
205
+ describe "null?" do
206
+ it "returns true when object is not null" do
207
+ Mustang::V8::Object.new.should_not be_null
208
+ end
209
+ end
210
+
211
+ describe "undefined?" do
212
+ it "returns true when object is not undefined" do
213
+ Mustang::V8::Object.new.should_not be_undefined
214
+ end
215
+ end
216
+
217
+ describe "empty?" do
218
+ it "returns true when object is not empty" do
219
+ Mustang::V8::Object.new.should_not be_empty
220
+ end
221
+ end
222
+ end