aukan-bitmask 0.0.5 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ data.tar.gz: 487be3aae6556e0673414b9826e51354af80ec54
4
+ metadata.gz: 1783a12d886912fef53eebc1ba0376d49b54f08e
5
+ SHA512:
6
+ data.tar.gz: 9df37bccf89a2aa3965dcdaa8183c055bd74fecc721f824417c65debddfe1d382a2c60af56029551ed71ad3fa57ebfe8cb6307d53963aa907aabc8303dc96600
7
+ metadata.gz: 4f6707a916c14d8ce067c69be8fdcfe1fe67b593610f03c46cb1e7015ff7e9a00749577f7fb2f690697b982e54337eccb5fadf9820abb71f4cb0c45c4c25579d
@@ -21,17 +21,18 @@ class Bitmask
21
21
  position = @bit_ids.index( bit_id )
22
22
 
23
23
  if position == nil
24
- raise "#{bit_id.inspect} was not included on bit_ids array"
24
+ raise ArgumentError, "#{bit_id.inspect} was not included on bit_ids array"
25
25
  end
26
26
 
27
- return (@value & (2 ** position)) > 0
27
+ (@value & (2 ** position)) > 0
28
28
  end
29
+ alias :[] :get
29
30
 
30
31
  def set ( bit_id, val )
31
32
  position = @bit_ids.index( bit_id )
32
33
 
33
34
  if position == nil
34
- raise "#{bit_id.inspect} was not included on bit_ids array"
35
+ raise ArgumentError, "#{bit_id.inspect} was not included on bit_ids array"
35
36
  end
36
37
 
37
38
  if val == true
@@ -42,8 +43,9 @@ class Bitmask
42
43
 
43
44
  @after_change.call(self) if @after_change
44
45
 
45
- return self.value
46
+ val
46
47
  end
48
+ alias :[]= :set
47
49
 
48
50
  def value= ( val )
49
51
  @value = val
@@ -14,7 +14,7 @@ module BitmaskAttribute
14
14
  options = default_options.merge(options)
15
15
 
16
16
  bitmask_obj = options[:bitmask_object]
17
- class_eval <<-ADD_METHOD
17
+ class_eval <<-ADD_METHODS
18
18
  def #{options[:bitmask_object]}
19
19
  @_#{options[:bitmask_object]} ||= Bitmask.new({
20
20
  :bit_ids => #{options[:bit_ids].inspect},
@@ -24,7 +24,14 @@ module BitmaskAttribute
24
24
  }
25
25
  })
26
26
  end
27
- ADD_METHOD
27
+
28
+ def #{options[:bitmask_object]}= new_bitmask_hash
29
+ new_bitmask_hash.each do |key, val|
30
+ #{options[:bitmask_object]}[key] = val
31
+ end
32
+ #{options[:bitmask_object]}
33
+ end
34
+ ADD_METHODS
28
35
 
29
36
  end
30
37
 
@@ -70,4 +70,38 @@ class TestBitmask < Test::Unit::TestCase
70
70
  @bitmask.value = 1
71
71
  assert number == 5
72
72
  end
73
+
74
+ def test_getting_attributes_with_square_brackets
75
+ assert @bitmask[:flag1] == false
76
+ assert @bitmask[:flag2] == false
77
+ assert @bitmask[:flag3] == false
78
+ end
79
+
80
+ def test_setting_attributes_with_square_brackets
81
+ @bitmask[:flag1] = true
82
+ @bitmask[:flag2] = false
83
+ @bitmask[:flag3] = true
84
+
85
+ assert @bitmask[:flag1] == true
86
+ assert @bitmask[:flag2] == false
87
+ assert @bitmask[:flag3] == true
88
+ end
89
+
90
+ def test_getting_missing_attribute_raises_error
91
+ assert_raise(ArgumentError) { @bitmask.get(:me_not_here) }
92
+ assert_raise(ArgumentError) { @bitmask[:me_not_here] }
93
+ end
94
+
95
+ def test_setting_missing_attribute_raises_error
96
+ assert_raise(ArgumentError) { @bitmask.set(:me_not_here, true) }
97
+ assert_raise(ArgumentError) { @bitmask[:me_not_here] = true }
98
+ end
99
+
100
+ def test_setting_returns_the_value_set
101
+ assert (@bitmask[:flag3] = true) == true
102
+ assert (@bitmask[:flag3] = false) == false
103
+
104
+ assert (@bitmask.set(:flag3, true)) == true
105
+ assert (@bitmask.set(:flag3, false)) == false
106
+ end
73
107
  end
@@ -34,4 +34,17 @@ class TestBitmaskAttribute < Test::Unit::TestCase
34
34
  assert @something.flags_bitmask.bit_ids == [:flag1, :flag2, :flag3]
35
35
  end
36
36
 
37
+ def test_setting_with_a_hash
38
+ @something.flags_bitmask= { :flag1 => true, :flag2 => false, :flag3 => true }
39
+ assert @something.flags == 5
40
+
41
+ @something.flags_bitmask= { :flag1 => false }
42
+ assert @something.flags == 4
43
+
44
+ @something.flags_bitmask= { :flag2 => true }
45
+ assert @something.flags == 6
46
+
47
+ assert_raise(ArgumentError) { @something.flags_bitmask= { :i_dont_exist => true } }
48
+ end
49
+
37
50
  end
metadata CHANGED
@@ -1,13 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aukan-bitmask
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
5
- prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 5
10
- version: 0.0.5
4
+ version: 0.1.0
11
5
  platform: ruby
12
6
  authors:
13
7
  - Pablo Gonzalez
@@ -15,8 +9,7 @@ autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
11
 
18
- date: 2012-11-27 00:00:00 -08:00
19
- default_executable:
12
+ date: 2014-07-16 00:00:00 Z
20
13
  dependencies: []
21
14
 
22
15
  description: Agnostic Bitmask and BitmaskAttribute. This gem includes Bitmask for standalone usage, and BitmaskAttribute to decorate an existing attribute on any class.
@@ -33,15 +26,16 @@ files:
33
26
  - README.md
34
27
  - README.rdoc
35
28
  - Rakefile
36
- - lib/bitmask.rb
37
29
  - lib/aukan-bitmask.rb
38
30
  - lib/bitmask_attribute.rb
31
+ - lib/bitmask.rb
32
+ - test/test_helper.rb
39
33
  - test/test_bitmask_attribute.rb
40
34
  - test/test_bitmask.rb
41
- - test/test_helper.rb
42
- has_rdoc: true
43
35
  homepage: https://github.com/aukan/aukan-bitmask
44
- licenses: []
36
+ licenses:
37
+ - MIT
38
+ metadata: {}
45
39
 
46
40
  post_install_message:
47
41
  rdoc_options: []
@@ -49,29 +43,20 @@ rdoc_options: []
49
43
  require_paths:
50
44
  - lib
51
45
  required_ruby_version: !ruby/object:Gem::Requirement
52
- none: false
53
46
  requirements:
54
- - - ">="
47
+ - &id001
48
+ - ">="
55
49
  - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
50
  version: "0"
60
51
  required_rubygems_version: !ruby/object:Gem::Requirement
61
- none: false
62
52
  requirements:
63
- - - ">="
64
- - !ruby/object:Gem::Version
65
- hash: 3
66
- segments:
67
- - 0
68
- version: "0"
53
+ - *id001
69
54
  requirements: []
70
55
 
71
56
  rubyforge_project: aukan-bitmask
72
- rubygems_version: 1.5.2
57
+ rubygems_version: 2.0.14
73
58
  signing_key:
74
- specification_version: 3
59
+ specification_version: 4
75
60
  summary: Agnostic Bitmask and BitmaskAttribute.
76
61
  test_files: []
77
62