sjekksum 0.0.1
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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/.rspec +2 -0
- data/.travis.yml +10 -0
- data/Gemfile +2 -0
- data/LICENSE +22 -0
- data/README.md +33 -0
- data/Rakefile +15 -0
- data/lib/sjekksum/damm.rb +36 -0
- data/lib/sjekksum/luhn.rb +26 -0
- data/lib/sjekksum/shared.rb +11 -0
- data/lib/sjekksum/verhoeff.rb +51 -0
- data/lib/sjekksum/version.rb +3 -0
- data/lib/sjekksum.rb +56 -0
- data/sjekksum.gemspec +27 -0
- data/spec/shared_implementation.rb +64 -0
- data/spec/sjekksum/damm_spec.rb +23 -0
- data/spec/sjekksum/luhn_spec.rb +23 -0
- data/spec/sjekksum/verhoeff_spec.rb +23 -0
- data/spec/sjekksum_spec.rb +59 -0
- data/spec/spec_helper.rb +11 -0
- metadata +155 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 138a821d406efac0c481425e7de8956af20f390d
|
4
|
+
data.tar.gz: 6655ede5c5a4c17a69ea6a166d46632128327c90
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 057656143728ce66d976633e71c73da8e4392cc7672eedcebc4c83499a905805260b15b35ed5603447db53432662a1b14990d86f93a5215a2561e0fc30451bb7
|
7
|
+
data.tar.gz: a2b2c5962a35890d0a203bd845fc3cf7270a3a5e9002416d1e00725750faecba6dcff2416183abba9a9058f5d6c7edc0e51a3432897b102336693e6d48a67a47
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Christoph Grabo
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# Sjekksum
|
2
|
+
|
3
|
+
A gem to provide some checksum algorithms like Luhn, Damm and Verhoeff.
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
gem "sjekksum"
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install damm
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
## Usage
|
24
|
+
|
25
|
+
__(TODO)__
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
## License
|
30
|
+
|
31
|
+
[MIT/X11](./LICENSE)
|
32
|
+
|
33
|
+
Copyright (c) 2013—2014 Christoph Grabo
|
data/Rakefile
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "rspec/core/rake_task"
|
3
|
+
|
4
|
+
desc "Starts PRY with gem loaded"
|
5
|
+
task :console do
|
6
|
+
sh "pry -I lib -r sjekksum --no-pager"
|
7
|
+
end
|
8
|
+
|
9
|
+
desc "Run all specs"
|
10
|
+
task RSpec::Core::RakeTask.new(:spec) do |t|
|
11
|
+
t.pattern = "spec/**/*_spec.rb"
|
12
|
+
t.verbose = false
|
13
|
+
end
|
14
|
+
|
15
|
+
task :default => :spec
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Sjekksum
|
2
|
+
module Damm
|
3
|
+
extend self
|
4
|
+
extend Shared
|
5
|
+
|
6
|
+
QUASIGROUP = [
|
7
|
+
[0, 3, 1, 7, 5, 9, 8, 6, 4, 2],
|
8
|
+
[7, 0, 9, 2, 1, 5, 4, 8, 6, 3],
|
9
|
+
[4, 2, 0, 6, 8, 7, 1, 3, 5, 9],
|
10
|
+
[1, 7, 5, 0, 9, 8, 3, 4, 2, 6],
|
11
|
+
[6, 1, 2, 3, 0, 4, 5, 9, 7, 8],
|
12
|
+
[3, 6, 7, 4, 2, 0, 9, 5, 8, 1],
|
13
|
+
[5, 8, 6, 9, 7, 2, 0, 1, 3, 4],
|
14
|
+
[8, 9, 4, 5, 3, 6, 2, 0, 1, 7],
|
15
|
+
[9, 4, 3, 8, 6, 1, 7, 2, 0, 5],
|
16
|
+
[2, 5, 8, 1, 4, 3, 6, 7, 9, 0]
|
17
|
+
].freeze
|
18
|
+
|
19
|
+
def of input_value
|
20
|
+
raise_on_type_mismatch input_value
|
21
|
+
digits = input_value.to_s.chars.map(&:to_i)
|
22
|
+
digits.reduce(0){|check, digit| QUASIGROUP[check][digit] }
|
23
|
+
end
|
24
|
+
|
25
|
+
def valid? input_value
|
26
|
+
raise_on_type_mismatch input_value
|
27
|
+
self.of(input_value).zero?
|
28
|
+
end
|
29
|
+
|
30
|
+
def convert input_value
|
31
|
+
raise_on_type_mismatch input_value
|
32
|
+
(input_value * 10) + self.of(input_value)
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Sjekksum
|
2
|
+
module Luhn
|
3
|
+
extend self
|
4
|
+
extend Shared
|
5
|
+
|
6
|
+
def of input_value
|
7
|
+
raise_on_type_mismatch input_value
|
8
|
+
digits = input_value.to_s.chars.map(&:to_i)
|
9
|
+
sum = digits.reverse.map.with_index do |digit, idx|
|
10
|
+
idx.even? ? (digit * 2).divmod(10).reduce(&:+) : digit
|
11
|
+
end.reverse.reduce(&:+)
|
12
|
+
|
13
|
+
(10 - sum % 10) % 10
|
14
|
+
end
|
15
|
+
|
16
|
+
def valid? input_value
|
17
|
+
raise_on_type_mismatch input_value
|
18
|
+
self.of(input_value.div(10)) == (input_value % 10)
|
19
|
+
end
|
20
|
+
|
21
|
+
def convert input_value
|
22
|
+
raise_on_type_mismatch input_value
|
23
|
+
(input_value * 10) + self.of(input_value)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Sjekksum
|
2
|
+
module Verhoeff
|
3
|
+
extend self
|
4
|
+
extend Shared
|
5
|
+
|
6
|
+
DIHEDRAL_GROUP_D5 = [
|
7
|
+
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ],
|
8
|
+
[ 1, 2, 3, 4, 0, 6, 7, 8, 9, 5 ],
|
9
|
+
[ 2, 3, 4, 0, 1, 7, 8, 9, 5, 6 ],
|
10
|
+
[ 3, 4, 0, 1, 2, 8, 9, 5, 6, 7 ],
|
11
|
+
[ 4, 0, 1, 2, 3, 9, 5, 6, 7, 8 ],
|
12
|
+
[ 5, 9, 8, 7, 6, 0, 4, 3, 2, 1 ],
|
13
|
+
[ 6, 5, 9, 8, 7, 1, 0, 4, 3, 2 ],
|
14
|
+
[ 7, 6, 5, 9, 8, 2, 1, 0, 4, 3 ],
|
15
|
+
[ 8, 7, 6, 5, 9, 3, 2, 1, 0, 4 ],
|
16
|
+
[ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 ]
|
17
|
+
].freeze
|
18
|
+
|
19
|
+
PERMUTATION = [
|
20
|
+
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ],
|
21
|
+
[ 1, 5, 7, 6, 2, 8, 3, 0, 9, 4 ],
|
22
|
+
[ 5, 8, 0, 3, 7, 9, 6, 1, 4, 2 ],
|
23
|
+
[ 8, 9, 1, 6, 0, 4, 3, 5, 2, 7 ],
|
24
|
+
[ 9, 4, 5, 3, 1, 2, 6, 8, 7, 0 ],
|
25
|
+
[ 4, 2, 8, 6, 5, 7, 3, 9, 0, 1 ],
|
26
|
+
[ 2, 7, 9, 3, 8, 0, 6, 4, 1, 5 ],
|
27
|
+
[ 7, 0, 4, 6, 9, 1, 3, 2, 5, 8 ]
|
28
|
+
].freeze
|
29
|
+
|
30
|
+
INVERSE = [ 0, 4, 3, 2, 1, 5, 6, 7, 8, 9 ].freeze
|
31
|
+
|
32
|
+
def of input_value
|
33
|
+
raise_on_type_mismatch input_value
|
34
|
+
digits = input_value.to_s.chars.map(&:to_i)
|
35
|
+
INVERSE[digits.reverse_each.with_index.reduce(0) { |check, (digit, idx)|
|
36
|
+
d_row = DIHEDRAL_GROUP_D5[check]
|
37
|
+
d_row[ PERMUTATION[idx.next % 8][digit] ]
|
38
|
+
}]
|
39
|
+
end
|
40
|
+
|
41
|
+
def valid? input_value
|
42
|
+
raise_on_type_mismatch input_value
|
43
|
+
self.of(input_value.div(10)) == (input_value % 10)
|
44
|
+
end
|
45
|
+
|
46
|
+
def convert input_value
|
47
|
+
raise_on_type_mismatch input_value
|
48
|
+
(input_value * 10) + self.of(input_value)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/sjekksum.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
require "sjekksum/version"
|
2
|
+
|
3
|
+
require "sjekksum/shared"
|
4
|
+
require "sjekksum/damm"
|
5
|
+
require "sjekksum/luhn"
|
6
|
+
require "sjekksum/verhoeff"
|
7
|
+
|
8
|
+
module Sjekksum
|
9
|
+
extend self
|
10
|
+
|
11
|
+
def damm_of input_value
|
12
|
+
Damm.of input_value
|
13
|
+
end
|
14
|
+
alias_method :damm, :damm_of
|
15
|
+
|
16
|
+
def luhn_of input_value
|
17
|
+
Luhn.of input_value
|
18
|
+
end
|
19
|
+
alias_method :luhn, :luhn_of
|
20
|
+
|
21
|
+
def verhoeff_of input_value
|
22
|
+
Verhoeff.of input_value
|
23
|
+
end
|
24
|
+
alias_method :verhoeff, :verhoeff_of
|
25
|
+
|
26
|
+
def valid_damm? input_value
|
27
|
+
Damm.valid? input_value
|
28
|
+
end
|
29
|
+
alias_method :damm?, :valid_damm?
|
30
|
+
|
31
|
+
def valid_luhn? input_value
|
32
|
+
Luhn.valid? input_value
|
33
|
+
end
|
34
|
+
alias_method :luhn?, :valid_luhn?
|
35
|
+
|
36
|
+
def valid_verhoeff? input_value
|
37
|
+
Verhoeff.valid? input_value
|
38
|
+
end
|
39
|
+
alias_method :verhoeff?, :valid_verhoeff?
|
40
|
+
|
41
|
+
def make_damm input_value
|
42
|
+
Damm.convert input_value
|
43
|
+
end
|
44
|
+
alias_method :damm!, :make_damm
|
45
|
+
|
46
|
+
def make_luhn input_value
|
47
|
+
Luhn.convert input_value
|
48
|
+
end
|
49
|
+
alias_method :luhn!, :make_luhn
|
50
|
+
|
51
|
+
def make_verhoeff input_value
|
52
|
+
Verhoeff.convert input_value
|
53
|
+
end
|
54
|
+
alias_method :verhoeff!, :make_verhoeff
|
55
|
+
|
56
|
+
end
|
data/sjekksum.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'sjekksum/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "sjekksum"
|
8
|
+
spec.version = Sjekksum::VERSION
|
9
|
+
spec.authors = ["Christoph Grabo"]
|
10
|
+
spec.email = ["chris@dinarrr.com"]
|
11
|
+
spec.summary = %q{Collection of some checksum/validation algorithms}
|
12
|
+
spec.description = %q{A gem to provide some checksum algorithms like Luhn, Damm and Verhoeff.}
|
13
|
+
spec.homepage = "https://github.com/asaaki/sjekksum"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.5"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "inch"
|
24
|
+
spec.add_development_dependency "pry"
|
25
|
+
spec.add_development_dependency "pry-doc"
|
26
|
+
spec.add_development_dependency "rspec"
|
27
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
shared_examples "a checksum implementation:" do |success_spec_matrix, fail_spec_matrix|
|
2
|
+
|
3
|
+
describe :of do
|
4
|
+
success_spec_matrix.each do |spec_item|
|
5
|
+
it "calculates checksum: #{spec_item[0]} => #{spec_item[1]}" do
|
6
|
+
expect(described_class.of(spec_item[0])).to eq(spec_item[1])
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
fail_spec_matrix.each do |spec_item|
|
11
|
+
it "does not calculate checksum: #{spec_item[0]} => #{spec_item[1]}" do
|
12
|
+
expect(described_class.of(spec_item[0])).to_not eq(spec_item[1])
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe :valid? do
|
18
|
+
success_spec_matrix.each do |spec_item|
|
19
|
+
spec_value = spec_item[0] * 10 + spec_item[1]
|
20
|
+
it "returns true for #{spec_value}" do
|
21
|
+
expect(described_class.valid?(spec_value)).to be_true
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
fail_spec_matrix.each do |spec_item|
|
26
|
+
spec_value = spec_item[0] * 10 + spec_item[1]
|
27
|
+
it "does not return true for #{spec_value}" do
|
28
|
+
expect(described_class.valid?(spec_value)).to_not be_true
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe :convert do
|
34
|
+
success_spec_matrix.each do |spec_item|
|
35
|
+
spec_value = spec_item[0] * 10 + spec_item[1]
|
36
|
+
it "transforms #{spec_item[0]} to #{spec_value}" do
|
37
|
+
expect(described_class.convert(spec_item[0])).to eq(spec_value)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
fail_spec_matrix.each do |spec_item|
|
42
|
+
spec_value = spec_item[0] * 10 + spec_item[1]
|
43
|
+
it "does not transform #{spec_item[0]} to #{spec_value}" do
|
44
|
+
expect(described_class.convert(spec_item[0])).to_not eq(spec_value)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "invalid input" do
|
50
|
+
["1234", 12.34, true, false, nil, {}, [], Proc.new{}, Class.new, Module.new].each do |invalid_input|
|
51
|
+
it "#of raises an ArgumentError for #{invalid_input.inspect} (type: #{invalid_input.class})" do
|
52
|
+
expect{ described_class.of(invalid_input) }.to raise_error(ArgumentError)
|
53
|
+
end
|
54
|
+
it "#valid? raises an ArgumentError for #{invalid_input.inspect} (type: #{invalid_input.class})" do
|
55
|
+
expect{ described_class.valid?(invalid_input) }.to raise_error(ArgumentError)
|
56
|
+
end
|
57
|
+
it "#convert raises an ArgumentError for #{invalid_input.inspect} (type: #{invalid_input.class})" do
|
58
|
+
expect{ described_class.convert(invalid_input) }.to raise_error(ArgumentError)
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "shared_implementation"
|
3
|
+
|
4
|
+
describe Sjekksum::Damm do
|
5
|
+
|
6
|
+
success_spec_matrix = [
|
7
|
+
[ 1, 3 ],
|
8
|
+
[ 20, 7 ],
|
9
|
+
[ 300, 9 ],
|
10
|
+
[ 4000, 7 ],
|
11
|
+
[ 55555, 5 ],
|
12
|
+
[ 424242, 0 ],
|
13
|
+
[ 572, 4 ],
|
14
|
+
]
|
15
|
+
|
16
|
+
fail_spec_matrix = [
|
17
|
+
[ 1, 1 ],
|
18
|
+
[ 572, 9 ]
|
19
|
+
]
|
20
|
+
|
21
|
+
it_behaves_like "a checksum implementation:", success_spec_matrix, fail_spec_matrix
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "shared_implementation"
|
3
|
+
|
4
|
+
describe Sjekksum::Luhn do
|
5
|
+
|
6
|
+
success_spec_matrix = [
|
7
|
+
[ 1, 8 ],
|
8
|
+
[ 20, 8 ],
|
9
|
+
[ 300, 4 ],
|
10
|
+
[ 4000, 6 ],
|
11
|
+
[ 55555, 7 ],
|
12
|
+
[ 424242, 6 ],
|
13
|
+
[ 7992739871, 3 ],
|
14
|
+
]
|
15
|
+
|
16
|
+
fail_spec_matrix = [
|
17
|
+
[ 1, 1 ],
|
18
|
+
[ 7992739871, 9 ]
|
19
|
+
]
|
20
|
+
|
21
|
+
it_behaves_like "a checksum implementation:", success_spec_matrix, fail_spec_matrix
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "shared_implementation"
|
3
|
+
|
4
|
+
describe Sjekksum::Verhoeff do
|
5
|
+
|
6
|
+
success_spec_matrix = [
|
7
|
+
[ 1, 5 ],
|
8
|
+
[ 20, 4 ],
|
9
|
+
[ 300, 0 ],
|
10
|
+
[ 4000, 1 ],
|
11
|
+
[ 55555, 7 ],
|
12
|
+
[ 424242, 3 ],
|
13
|
+
[ 142857, 0 ]
|
14
|
+
]
|
15
|
+
|
16
|
+
fail_spec_matrix = [
|
17
|
+
[ 1, 1 ],
|
18
|
+
[ 142857, 9 ]
|
19
|
+
]
|
20
|
+
|
21
|
+
it_behaves_like "a checksum implementation:", success_spec_matrix, fail_spec_matrix
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Sjekksum do
|
4
|
+
|
5
|
+
spec_values = {
|
6
|
+
input: 12345,
|
7
|
+
damm: 9,
|
8
|
+
luhn: 5,
|
9
|
+
verhoeff: 1
|
10
|
+
}
|
11
|
+
|
12
|
+
specify { expect(described_class).to be_a(Module) }
|
13
|
+
|
14
|
+
it "#damm" do
|
15
|
+
expected = spec_values[:input] * 10 + spec_values[:damm]
|
16
|
+
expect(described_class.damm(spec_values[:input])).to eq(spec_values[:damm])
|
17
|
+
end
|
18
|
+
|
19
|
+
it "#damm?" do
|
20
|
+
value = spec_values[:input] * 10 + spec_values[:damm]
|
21
|
+
expect(described_class.damm?(value)).to be_true
|
22
|
+
end
|
23
|
+
|
24
|
+
it "#damm!" do
|
25
|
+
expected = spec_values[:input] * 10 + spec_values[:damm]
|
26
|
+
expect(described_class.damm!(spec_values[:input])).to eq(expected)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "#luhn" do
|
30
|
+
expected = spec_values[:input] * 10 + spec_values[:luhn]
|
31
|
+
expect(described_class.luhn(spec_values[:input])).to eq(spec_values[:luhn])
|
32
|
+
end
|
33
|
+
|
34
|
+
it "#luhn?" do
|
35
|
+
value = spec_values[:input] * 10 + spec_values[:luhn]
|
36
|
+
expect(described_class.luhn?(value)).to be_true
|
37
|
+
end
|
38
|
+
|
39
|
+
it "#luhn!" do
|
40
|
+
expected = spec_values[:input] * 10 + spec_values[:luhn]
|
41
|
+
expect(described_class.luhn!(spec_values[:input])).to eq(expected)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "#verhoeff" do
|
45
|
+
expected = spec_values[:input] * 10 + spec_values[:verhoeff]
|
46
|
+
expect(described_class.verhoeff(spec_values[:input])).to eq(spec_values[:verhoeff])
|
47
|
+
end
|
48
|
+
|
49
|
+
it "#verhoeff?" do
|
50
|
+
value = spec_values[:input] * 10 + spec_values[:verhoeff]
|
51
|
+
expect(described_class.verhoeff?(value)).to be_true
|
52
|
+
end
|
53
|
+
|
54
|
+
it "#verhoeff!" do
|
55
|
+
expected = spec_values[:input] * 10 + spec_values[:verhoeff]
|
56
|
+
expect(described_class.verhoeff!(spec_values[:input])).to eq(expected)
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,155 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sjekksum
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Christoph Grabo
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-02-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.5'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.5'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: inch
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry-doc
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description: A gem to provide some checksum algorithms like Luhn, Damm and Verhoeff.
|
98
|
+
email:
|
99
|
+
- chris@dinarrr.com
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- ".rspec"
|
106
|
+
- ".travis.yml"
|
107
|
+
- Gemfile
|
108
|
+
- LICENSE
|
109
|
+
- README.md
|
110
|
+
- Rakefile
|
111
|
+
- lib/sjekksum.rb
|
112
|
+
- lib/sjekksum/damm.rb
|
113
|
+
- lib/sjekksum/luhn.rb
|
114
|
+
- lib/sjekksum/shared.rb
|
115
|
+
- lib/sjekksum/verhoeff.rb
|
116
|
+
- lib/sjekksum/version.rb
|
117
|
+
- sjekksum.gemspec
|
118
|
+
- spec/shared_implementation.rb
|
119
|
+
- spec/sjekksum/damm_spec.rb
|
120
|
+
- spec/sjekksum/luhn_spec.rb
|
121
|
+
- spec/sjekksum/verhoeff_spec.rb
|
122
|
+
- spec/sjekksum_spec.rb
|
123
|
+
- spec/spec_helper.rb
|
124
|
+
homepage: https://github.com/asaaki/sjekksum
|
125
|
+
licenses:
|
126
|
+
- MIT
|
127
|
+
metadata: {}
|
128
|
+
post_install_message:
|
129
|
+
rdoc_options: []
|
130
|
+
require_paths:
|
131
|
+
- lib
|
132
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - ">="
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '0'
|
137
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
|
+
requirements:
|
139
|
+
- - ">="
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
requirements: []
|
143
|
+
rubyforge_project:
|
144
|
+
rubygems_version: 2.2.0
|
145
|
+
signing_key:
|
146
|
+
specification_version: 4
|
147
|
+
summary: Collection of some checksum/validation algorithms
|
148
|
+
test_files:
|
149
|
+
- spec/shared_implementation.rb
|
150
|
+
- spec/sjekksum/damm_spec.rb
|
151
|
+
- spec/sjekksum/luhn_spec.rb
|
152
|
+
- spec/sjekksum/verhoeff_spec.rb
|
153
|
+
- spec/sjekksum_spec.rb
|
154
|
+
- spec/spec_helper.rb
|
155
|
+
has_rdoc:
|