constants 0.1.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.
- data/MIT-LICENSE +21 -0
- data/README +125 -0
- data/Rakefile +171 -0
- data/lib/constants.rb +5 -0
- data/lib/constants/constant.rb +94 -0
- data/lib/constants/constant_library.rb +299 -0
- data/lib/constants/libraries/element.rb +214 -0
- data/lib/constants/libraries/particle.rb +83 -0
- data/lib/constants/libraries/physical.rb +297 -0
- data/lib/constants/library.rb +133 -0
- data/lib/constants/stash.rb +94 -0
- data/lib/constants/uncertainty.rb +8 -0
- data/test/constants/constant_library_test.rb +304 -0
- data/test/constants/constant_test.rb +77 -0
- data/test/constants/libraries/element_test.rb +207 -0
- data/test/constants/libraries/particle_test.rb +43 -0
- data/test/constants/libraries/physical_test.rb +32 -0
- data/test/constants/library_test.rb +125 -0
- data/test/constants/stash_test.rb +99 -0
- data/test/constants_test_helper.rb +51 -0
- data/test/constants_test_suite.rb +3 -0
- data/test/readme_doc_test.rb +58 -0
- metadata +84 -0
@@ -0,0 +1,99 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../constants_test_helper.rb')
|
2
|
+
require 'constants/stash'
|
3
|
+
|
4
|
+
class StashTest < Test::Unit::TestCase
|
5
|
+
include Constants
|
6
|
+
|
7
|
+
class StashingHash < Hash
|
8
|
+
include Constants::Stash
|
9
|
+
|
10
|
+
def initialize(*args)
|
11
|
+
super(*args)
|
12
|
+
@nil_value = nil
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_reader :s
|
17
|
+
|
18
|
+
def setup
|
19
|
+
@s = StashingHash.new
|
20
|
+
end
|
21
|
+
|
22
|
+
#
|
23
|
+
# documentation test
|
24
|
+
#
|
25
|
+
|
26
|
+
def test_documentation
|
27
|
+
s = StashingHash.new
|
28
|
+
|
29
|
+
s.stash('key', 'one')
|
30
|
+
assert_equal 'one', s['key']
|
31
|
+
|
32
|
+
s.stash('key', 'two')
|
33
|
+
assert_equal ['one' , 'two'], s['key']
|
34
|
+
assert_equal Constants::Stash::StashArray, s['key'].class
|
35
|
+
|
36
|
+
###
|
37
|
+
s = StashingHash.new
|
38
|
+
assert_nil s['key']
|
39
|
+
assert_nil s.nil_value
|
40
|
+
|
41
|
+
s.stash('key', 1)
|
42
|
+
assert_equal 1, s['key']
|
43
|
+
|
44
|
+
s.stash('key', 2)
|
45
|
+
assert_equal [1, 2], s['key']
|
46
|
+
|
47
|
+
###
|
48
|
+
assert_raise(ArgumentError) { s.stash('key', nil) }
|
49
|
+
end
|
50
|
+
|
51
|
+
#
|
52
|
+
# initialization test
|
53
|
+
#
|
54
|
+
|
55
|
+
def test_initialization_sets_nil_value
|
56
|
+
s = StashingHash.new
|
57
|
+
assert_equal({}, s)
|
58
|
+
assert_equal(nil, s.nil_value)
|
59
|
+
end
|
60
|
+
|
61
|
+
#
|
62
|
+
# stash test
|
63
|
+
#
|
64
|
+
|
65
|
+
def test_stash_stores_new_values_at_key
|
66
|
+
s.stash('key', 'one')
|
67
|
+
assert_equal({'key' => 'one'}, s)
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_stash_stores_addition_values_in_a_StashArray
|
71
|
+
s.stash('key', 'one')
|
72
|
+
s.stash('key', 'two')
|
73
|
+
s.stash('key', 'three')
|
74
|
+
|
75
|
+
assert_equal({'key' => ['one', 'two', 'three']}, s)
|
76
|
+
assert_equal Constants::Stash::StashArray, s['key'].class
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_stash_handles_array_values_properly
|
80
|
+
s.stash('key', ['one'])
|
81
|
+
assert_equal({'key' => ['one']}, s)
|
82
|
+
|
83
|
+
s.stash('key', ['two'])
|
84
|
+
assert_equal({'key' => [['one'], ['two']]}, s)
|
85
|
+
|
86
|
+
s.stash('key', ['three'])
|
87
|
+
assert_equal({'key' => [['one'], ['two'], ['three']]}, s)
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_stash_raises_error_for_nil_value_and_StashArray_values
|
91
|
+
assert_raise(ArgumentError) { s.stash('key', s.nil_value) }
|
92
|
+
assert_raise(ArgumentError) { s.stash('key', Stash::StashArray.new) }
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_stash_returns_self
|
96
|
+
assert_equal s, s.stash('key', 'value')
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'benchmark'
|
4
|
+
require 'pp'
|
5
|
+
|
6
|
+
class Test::Unit::TestCase
|
7
|
+
include Benchmark
|
8
|
+
|
9
|
+
#
|
10
|
+
# mass tests
|
11
|
+
#
|
12
|
+
|
13
|
+
def delta_mass
|
14
|
+
10**-5
|
15
|
+
end
|
16
|
+
|
17
|
+
def delta_abundance
|
18
|
+
10**-1
|
19
|
+
end
|
20
|
+
|
21
|
+
def benchmark_test(length=10, &block)
|
22
|
+
if ENV["benchmark"] =~ /true/i
|
23
|
+
puts
|
24
|
+
puts method_name
|
25
|
+
bm(length, &block)
|
26
|
+
else
|
27
|
+
print 'b'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def const_ordered_assert_equal(a,b, msg=nil)
|
32
|
+
if RUBY_VERSION =~ /^1.8/
|
33
|
+
print "*"
|
34
|
+
|
35
|
+
case a
|
36
|
+
when Array
|
37
|
+
assert_equal a.sort, b.sort, msg
|
38
|
+
when Hash
|
39
|
+
[a,b].each do |hash|
|
40
|
+
hash.each_pair do |key, value|
|
41
|
+
value.sort! if value.kind_of?(Array)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
assert_equal a, b, msg
|
45
|
+
end
|
46
|
+
else
|
47
|
+
assert_equal a, b, msg
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'constants_test_helper.rb')
|
2
|
+
require 'constants'
|
3
|
+
|
4
|
+
class ReadMeDocTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include Constants::Libraries
|
7
|
+
|
8
|
+
# A library of amino acid residues.
|
9
|
+
class Residue
|
10
|
+
attr_reader :letter, :abbr, :name
|
11
|
+
|
12
|
+
def initialize(letter, abbr, name)
|
13
|
+
@letter = letter
|
14
|
+
@abbr = abbr
|
15
|
+
@name = name
|
16
|
+
end
|
17
|
+
|
18
|
+
A = Residue.new('A', "Ala", "Alanine")
|
19
|
+
C = Residue.new('C', "Cys", "Cysteine")
|
20
|
+
D = Residue.new('D', "Asp", "Aspartic Acid")
|
21
|
+
# ... normally you'd add the rest here ...
|
22
|
+
|
23
|
+
include Constants::Library
|
24
|
+
|
25
|
+
# add an index by an attribute or method
|
26
|
+
library.index_by_attribute :letter
|
27
|
+
|
28
|
+
# add an index where keys are calculated by a block
|
29
|
+
library.index_by 'upcase abbr' do |residue|
|
30
|
+
residue.abbr.upcase
|
31
|
+
end
|
32
|
+
|
33
|
+
# add a collection (same basic idea, but using an array)
|
34
|
+
library.collect_attribute 'name'
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_documentation
|
38
|
+
# Element predefines all chemical elements
|
39
|
+
c = Element::C
|
40
|
+
assert_equal "Carbon", c.name
|
41
|
+
assert_equal "C", c.symbol
|
42
|
+
assert_equal 6, c.atomic_number
|
43
|
+
assert_equal 12.0, c.mass
|
44
|
+
assert_equal 13.0033548378, c.mass(13)
|
45
|
+
|
46
|
+
assert c == Element['Carbon']
|
47
|
+
assert c == Element['C']
|
48
|
+
assert c == Element[6]
|
49
|
+
|
50
|
+
###
|
51
|
+
assert_equal Residue::D, Residue['D']
|
52
|
+
assert_equal Residue::A, Residue['ALA']
|
53
|
+
|
54
|
+
assert_equal({'ALA' => Residue::A, 'CYS' => Residue::C, 'ASP' => Residue::D}, Residue.index('upcase abbr'))
|
55
|
+
const_ordered_assert_equal(["Alanine", "Cysteine", "Aspartic Acid"], Residue.collection('name'))
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
metadata
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: constants
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Simon Chiang
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-08-11 00:00:00 -06:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: ruby-units
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 1.1.3
|
24
|
+
version:
|
25
|
+
description:
|
26
|
+
email: simon.a.chiang@gmail.com
|
27
|
+
executables: []
|
28
|
+
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files:
|
32
|
+
- README
|
33
|
+
- MIT-LICENSE
|
34
|
+
files:
|
35
|
+
- MIT-LICENSE
|
36
|
+
- Rakefile
|
37
|
+
- README
|
38
|
+
- lib/constants/constant.rb
|
39
|
+
- lib/constants/constant_library.rb
|
40
|
+
- lib/constants/libraries/element.rb
|
41
|
+
- lib/constants/libraries/particle.rb
|
42
|
+
- lib/constants/libraries/physical.rb
|
43
|
+
- lib/constants/library.rb
|
44
|
+
- lib/constants/stash.rb
|
45
|
+
- lib/constants/uncertainty.rb
|
46
|
+
- lib/constants.rb
|
47
|
+
- test/constants/constant_library_test.rb
|
48
|
+
- test/constants/constant_test.rb
|
49
|
+
- test/constants/libraries/element_test.rb
|
50
|
+
- test/constants/libraries/particle_test.rb
|
51
|
+
- test/constants/libraries/physical_test.rb
|
52
|
+
- test/constants/library_test.rb
|
53
|
+
- test/constants/stash_test.rb
|
54
|
+
- test/constants_test_helper.rb
|
55
|
+
- test/constants_test_suite.rb
|
56
|
+
- test/readme_doc_test.rb
|
57
|
+
has_rdoc: true
|
58
|
+
homepage: http://bioactive.rubyforge.org/constants/
|
59
|
+
post_install_message:
|
60
|
+
rdoc_options: []
|
61
|
+
|
62
|
+
require_paths:
|
63
|
+
- lib
|
64
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: "0"
|
69
|
+
version:
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: "0"
|
75
|
+
version:
|
76
|
+
requirements: []
|
77
|
+
|
78
|
+
rubyforge_project: bioactive
|
79
|
+
rubygems_version: 1.2.0
|
80
|
+
signing_key:
|
81
|
+
specification_version: 2
|
82
|
+
summary: Libraries of constants. Includes libraries for elements, particles, and physical constants.
|
83
|
+
test_files:
|
84
|
+
- test/constants_test_suite.rb
|