assert_type 0.1.1 → 0.1.2

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2db5929824a8014f891a1619c7105c9589352a25
4
+ data.tar.gz: a98f304cc29eb614b1392bef59a032cdcd6ef692
5
+ SHA512:
6
+ metadata.gz: bb02c29cb86208c3e84f40d07b294d09adcd3e92f487ca1e18a7a5cf152ada22929a78721d58a820b25e5812fa4297dc4e00738d9bd96c30299c89394b03e82a
7
+ data.tar.gz: d524bfb482e82294985980213a034ab04d5cef808996468bc88072a1f4a9418614c88a91371b6205a6effdcc774356d0b8ebfa6fe2e941bb43a4fcab9dc8b50e
@@ -26,7 +26,9 @@ module AssertType
26
26
  when "false"
27
27
  value == false
28
28
  else
29
- type_name == value.class.to_s
29
+ value.class.ancestors.collect(&:to_s).any? do |value_class|
30
+ type_name == value_class.to_s
31
+ end
30
32
  end
31
33
 
32
34
  end
@@ -1,3 +1,3 @@
1
1
  module AssertType
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -45,6 +45,14 @@ describe AssertType do
45
45
  example_valid "String, Symbol", :Symbol
46
46
  example_invalid "String, Symbol", 42
47
47
 
48
+ example_valid "AssertType::TestClass", AssertType::TestClass.new
49
+ example_invalid "AssertType::TestClass", AssertType::TestClass
50
+ example_valid "AssertType::TestClass", AssertType::TestSubClass.new
51
+
52
+ example_invalid "Array<AssertType::TestSubClass>", [AssertType::TestClass.new]
53
+ example_valid "Array<AssertType::TestSubClass>", [AssertType::TestSubClass.new]
54
+ example_valid "Array<AssertType::TestSubClass>", [AssertType::TestSubSubClass.new]
55
+
48
56
  example_call_error Array, []
49
57
  example_call_error [Fixnum, String], 1
50
58
  example_call_error [1,2,3], "Array<Fixnum>"
@@ -5,3 +5,7 @@ require File.expand_path("../lib/assert_type.rb", File.dirname(__FILE__))
5
5
 
6
6
  RSpec.configure do |config|
7
7
  end
8
+
9
+ class AssertType::TestClass; end
10
+ class AssertType::TestSubClass < AssertType::TestClass; end
11
+ class AssertType::TestSubSubClass < AssertType::TestSubClass; end
@@ -109,6 +109,25 @@ module AssertType
109
109
  TypeValidator.valid?(node, false).should be_false
110
110
  end
111
111
 
112
+ it "example: custom class" do
113
+ node = stub("TypeNode", :name => "_root", :children => [
114
+ stub("TypeNode", :name => "AssertType::TestClass", :children => [])
115
+ ])
116
+ TypeValidator.valid?(node, {}).should be_false
117
+ TypeValidator.valid?(node, []).should be_false
118
+ TypeValidator.valid?(node, AssertType::TestClass).should be_false
119
+ TypeValidator.valid?(node, AssertType::TestClass.new).should be_true
120
+ end
121
+
122
+ it "example: subclass" do
123
+ node = stub("TypeNode", :name => "_root", :children => [
124
+ stub("TypeNode", :name => "AssertType::TestSubClass", :children => [])
125
+ ])
126
+ TypeValidator.valid?(node, AssertType::TestClass.new).should be_false
127
+ TypeValidator.valid?(node, AssertType::TestSubClass.new).should be_true
128
+ TypeValidator.valid?(node, AssertType::TestSubSubClass.new).should be_true
129
+ end
130
+
112
131
  ## Note: we can't parse this yet
113
132
  #xit "example: Hash{Symbol => Fixnum}" do
114
133
  # node = stub("TypeNode", :name => "Hash", :children => [
metadata CHANGED
@@ -1,33 +1,22 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: assert_type
3
- version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Joel Plane
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2013-07-01 00:00:00 Z
11
+ date: 2013-07-08 00:00:00.000000000 Z
19
12
  dependencies: []
20
-
21
13
  description: A method for very basic nested type assertions
22
- email:
14
+ email:
23
15
  - joel.plane@gmail.com
24
16
  executables: []
25
-
26
17
  extensions: []
27
-
28
18
  extra_rdoc_files: []
29
-
30
- files:
19
+ files:
31
20
  - .gitignore
32
21
  - Gemfile
33
22
  - README.md
@@ -49,38 +38,27 @@ files:
49
38
  - spec/type_string_parser_spec.rb
50
39
  - spec/type_string_tokeniser_spec.rb
51
40
  - spec/type_validator_spec.rb
52
- homepage: ""
41
+ homepage: ''
53
42
  licenses: []
54
-
43
+ metadata: {}
55
44
  post_install_message:
56
45
  rdoc_options: []
57
-
58
- require_paths:
46
+ require_paths:
59
47
  - lib
60
- required_ruby_version: !ruby/object:Gem::Requirement
61
- none: false
62
- requirements:
63
- - - ">="
64
- - !ruby/object:Gem::Version
65
- hash: 3
66
- segments:
67
- - 0
68
- version: "0"
69
- required_rubygems_version: !ruby/object:Gem::Requirement
70
- none: false
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- hash: 3
75
- segments:
76
- - 0
77
- version: "0"
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
78
58
  requirements: []
79
-
80
59
  rubyforge_project:
81
- rubygems_version: 1.7.2
60
+ rubygems_version: 2.0.3
82
61
  signing_key:
83
- specification_version: 3
62
+ specification_version: 4
84
63
  summary: simple method to do type assertions
85
64
  test_files: []
86
-