chemistry 0.0.2 → 0.0.3

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.
@@ -1,6 +1,5 @@
1
1
  rvm:
2
2
  - ree
3
- - 1.8.6
4
3
  - 1.8.7
5
4
  - 1.9.2
6
5
  - 1.9.3
data/Rakefile CHANGED
@@ -1,6 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
2
 
3
- LIB_FILES = FileList.new('lib/**/*.rb').exclude('lib/chemistry/version.rb')
3
+ LIB_FILES = FileList.new('lib/**/*.rb').
4
+ exclude('lib/chemistry/version.rb', 'lib/chemistry/element/*.rb')
4
5
  TEST_FILES = LIB_FILES.pathmap('%{^lib,test}d/test_%f')
5
6
 
6
7
  task :test do
@@ -1,10 +1,2 @@
1
1
  module Chemistry
2
- # Your code goes here...
3
- def add a, b
4
- a + b
5
- end
6
-
7
- def add c, d
8
- c + d
9
- end
10
2
  end
@@ -1,6 +1,6 @@
1
1
  require 'chemistry/element'
2
2
 
3
- module Chemistry::Element::DSL
3
+ module Chemistry::DSL
4
4
  extend self
5
5
 
6
6
  def element(name, &definition)
@@ -0,0 +1,7 @@
1
+ require 'chemistry/element/dsl'
2
+
3
+ Chemistry::Element::DSL.element "Beryllium" do
4
+ symbol "Be"
5
+ atomic_number 4
6
+ atomic_weight 9.012182
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'chemistry/element/dsl'
2
+
3
+ Chemistry::Element::DSL.element "Boron" do
4
+ symbol "B"
5
+ atomic_number 5
6
+ atomic_weight 10.811
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'chemistry/element/dsl'
2
+
3
+ Chemistry::Element::DSL.element "Helium" do
4
+ symbol "He"
5
+ atomic_number 2
6
+ atomic_weight 4.002602
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'chemistry/element/dsl'
2
+
3
+ Chemistry::Element::DSL.element "Hydrogen" do
4
+ symbol "H"
5
+ atomic_number 1
6
+ atomic_weight 1.00794
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'chemistry/element/dsl'
2
+
3
+ Chemistry::Element::DSL.element "Lithium" do
4
+ symbol "Li"
5
+ atomic_number 3
6
+ atomic_weight 6.941
7
+ end
@@ -0,0 +1,33 @@
1
+ require 'chemistry/temperature/kelvin'
2
+ require 'chemistry/temperature/fahrenheit'
3
+ require 'chemistry/temperature/celsius'
4
+
5
+ module Chemistry
6
+ class Temperature
7
+ class << self
8
+ def kelvin(temperature)
9
+ Chemistry::Temperature::Kelvin.new(temperature)
10
+ end
11
+
12
+ def celsius(temperature)
13
+ Chemistry::Temperature::Celsius.new(temperature)
14
+ end
15
+
16
+ def fahrenheit(temperature)
17
+ Chemistry::Temperature::Fahrenheit.new(temperature)
18
+ end
19
+ end
20
+
21
+ def initialize(temperature)
22
+ @temperature = temperature
23
+ end
24
+
25
+ def to_i
26
+ @temperature.to_i
27
+ end
28
+
29
+ def to_f
30
+ @temperature.to_f
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,27 @@
1
+ require 'chemistry/temperature'
2
+
3
+ module Chemistry
4
+ class Temperature
5
+ class Celsius < Chemistry::Temperature
6
+ def to_celsius
7
+ self
8
+ end
9
+
10
+ def to_kelvin
11
+ Chemistry::Temperature.kelvin convert_to_kelvin
12
+ end
13
+
14
+ def convert_to_kelvin
15
+ @temperature + 273.15
16
+ end
17
+
18
+ def to_fahrenheit
19
+ Chemistry::Temperature.fahrenheit convert_to_fahrenheit
20
+ end
21
+
22
+ def convert_to_fahrenheit
23
+ (@temperature * (9.0/5.0)) + 32.0
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,23 @@
1
+ require 'chemistry/temperature'
2
+
3
+ module Chemistry
4
+ class Temperature
5
+ class Fahrenheit < Chemistry::Temperature
6
+ def to_fahrenheit
7
+ self
8
+ end
9
+
10
+ def to_kelvin
11
+ to_celsius.to_kelvin
12
+ end
13
+
14
+ def to_celsius
15
+ Chemistry::Temperature.celsius convert_to_celsius
16
+ end
17
+
18
+ def convert_to_celsius
19
+ (@temperature - 32.0) / (9.0/5.0)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ require 'chemistry/temperature'
2
+
3
+ module Chemistry
4
+ class Temperature
5
+ class Kelvin < Chemistry::Temperature
6
+ def to_kelvin
7
+ self
8
+ end
9
+
10
+ def to_celsius
11
+ Chemistry::Temperature.celsius convert_to_celsius
12
+ end
13
+
14
+ def to_fahrenheit
15
+ to_celsius.to_fahrenheit
16
+ end
17
+
18
+ def convert_to_celsius
19
+ @temperature - 273.15
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,3 +1,3 @@
1
1
  module Chemistry
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1,28 @@
1
+ require 'test_helper'
2
+
3
+ class ToCelsiusTest < MiniTest::Unit::TestCase
4
+ def test_returns_self
5
+ temp = Chemistry::Temperature::Celsius.new(1)
6
+ assert_equal temp, temp.to_celsius
7
+ end
8
+ end
9
+
10
+ class ToKelvinTest < MiniTest::Unit::TestCase
11
+ def test_instance_of_kelvin
12
+ temp = Chemistry::Temperature::Celsius.new(1)
13
+ assert temp.to_kelvin.instance_of? Chemistry::Temperature::Kelvin
14
+ end
15
+
16
+ def test_difference_of_273
17
+ base = 1
18
+ temp = Chemistry::Temperature::Celsius.new(base)
19
+ assert_equal (temp.to_i - temp.to_kelvin.to_i).abs, 273
20
+ end
21
+ end
22
+
23
+ class ToFahrenheitTest < MiniTest::Unit::TestCase
24
+ def test_0C_is_32F
25
+ temp = Chemistry::Temperature::Celsius.new(0)
26
+ assert_equal temp.to_fahrenheit.to_i, 32
27
+ end
28
+ end
@@ -0,0 +1,15 @@
1
+ require 'test_helper'
2
+
3
+ class ToFahrenheitTest < MiniTest::Unit::TestCase
4
+ def test_returns_self
5
+ temp = Chemistry::Temperature::Fahrenheit.new(1)
6
+ assert_equal temp, temp.to_fahrenheit
7
+ end
8
+ end
9
+
10
+ class ToCelsiusTest < MiniTest::Unit::TestCase
11
+ def test_32F_is_0C
12
+ temp = Chemistry::Temperature::Fahrenheit.new(32)
13
+ assert_equal temp.to_celsius.to_i, 0
14
+ end
15
+ end
@@ -0,0 +1,28 @@
1
+ require 'test_helper'
2
+
3
+ class ToKelvinTest < MiniTest::Unit::TestCase
4
+ def test_returns_self
5
+ temp = Chemistry::Temperature::Kelvin.new(1)
6
+ assert_equal temp, temp.to_kelvin
7
+ end
8
+ end
9
+
10
+ class ToCelsiusTest < MiniTest::Unit::TestCase
11
+ def test_instance_of_celsius
12
+ temp = Chemistry::Temperature::Kelvin.new(1)
13
+ assert temp.to_celsius.instance_of? Chemistry::Temperature::Celsius
14
+ end
15
+
16
+ def test_difference_of_273
17
+ base = 1
18
+ temp = Chemistry::Temperature::Kelvin.new(base)
19
+ assert_equal (temp.to_i - temp.to_celsius.to_i).abs, 273
20
+ end
21
+ end
22
+
23
+ class ToFahrenheitTest < MiniTest::Unit::TestCase
24
+ def test_273_15K_is_32F
25
+ temp = Chemistry::Temperature::Kelvin.new(273.15)
26
+ assert_equal temp.to_fahrenheit.to_i, 32
27
+ end
28
+ end
@@ -3,30 +3,30 @@ require 'test_helper'
3
3
  class ElementTest < MiniTest::Unit::TestCase
4
4
  def test_raises_error_without_name
5
5
  assert_raises ArgumentError do
6
- ::Chemistry::Element::DSL.element
6
+ Chemistry::DSL.element
7
7
  end
8
8
  end
9
9
 
10
10
  def test_raises_error_without_block
11
11
  assert_raises ArgumentError do
12
- Chemistry::Element::DSL.element "Hydrogen"
12
+ Chemistry::DSL.element "Hydrogen"
13
13
  end
14
14
  end
15
15
 
16
16
  def test_defines_an_element
17
17
  assert_raises NameError do
18
- ::Chemistry::Element::Foobar
18
+ Chemistry::Element::Foobar
19
19
  end
20
20
 
21
- ::Chemistry::Element::DSL.element "Foobar" do
21
+ Chemistry::DSL.element "Foobar" do
22
22
  end
23
23
 
24
- assert_equal ::Chemistry::Element <=> ::Chemistry::Element::Foobar, 1
24
+ assert_equal Chemistry::Element <=> Chemistry::Element::Foobar, 1
25
25
  end
26
26
  end
27
27
 
28
28
  class DefinitionTest < MiniTest::Unit::TestCase
29
- include Chemistry::Element::DSL
29
+ include Chemistry::DSL
30
30
 
31
31
  def test_full_definition
32
32
  element "Hydrogen" do
@@ -0,0 +1,36 @@
1
+ require 'test_helper'
2
+
3
+ class KelvinTest < MiniTest::Unit::TestCase
4
+ def test_returns_kelvin_wrapper
5
+ assert Chemistry::Temperature.kelvin(1).
6
+ instance_of?(Chemistry::Temperature::Kelvin)
7
+ end
8
+ end
9
+
10
+ class ToITest < MiniTest::Unit::TestCase
11
+ def test_returns_temperature
12
+ temp = 1
13
+ assert_equal Chemistry::Temperature.new(temp).to_i, temp.to_i
14
+ end
15
+ end
16
+
17
+ class ToFTest < MiniTest::Unit::TestCase
18
+ def test_returns_temperature
19
+ temp = 1.0
20
+ assert_equal Chemistry::Temperature.new(temp).to_f, temp.to_f
21
+ end
22
+ end
23
+
24
+ class FahrenheitTest < MiniTest::Unit::TestCase
25
+ def test_returns_fahrenheit_wrapper
26
+ assert Chemistry::Temperature.fahrenheit(1).
27
+ instance_of?(Chemistry::Temperature::Fahrenheit)
28
+ end
29
+ end
30
+
31
+ class CelsiusTest < MiniTest::Unit::TestCase
32
+ def test_returns_celsius_wrapper
33
+ assert Chemistry::Temperature.celsius(1).
34
+ instance_of?(Chemistry::Temperature::Celsius)
35
+ end
36
+ end
@@ -1,4 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ChemistryTest < MiniTest::Unit::TestCase
4
- end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chemistry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-05 00:00:00.000000000 Z
12
+ date: 2012-08-09 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Chemistry is a toolkit for dealing with compounds
15
15
  email:
@@ -26,11 +26,24 @@ files:
26
26
  - Rakefile
27
27
  - chemistry.gemspec
28
28
  - lib/chemistry.rb
29
+ - lib/chemistry/dsl.rb
29
30
  - lib/chemistry/element.rb
30
- - lib/chemistry/element/dsl.rb
31
+ - lib/chemistry/element/beryllium.rb
32
+ - lib/chemistry/element/boron.rb
33
+ - lib/chemistry/element/helium.rb
34
+ - lib/chemistry/element/hydrogen.rb
35
+ - lib/chemistry/element/lithium.rb
36
+ - lib/chemistry/temperature.rb
37
+ - lib/chemistry/temperature/celsius.rb
38
+ - lib/chemistry/temperature/fahrenheit.rb
39
+ - lib/chemistry/temperature/kelvin.rb
31
40
  - lib/chemistry/version.rb
32
- - test/chemistry/element/test_dsl.rb
41
+ - test/chemistry/temperature/test_celsius.rb
42
+ - test/chemistry/temperature/test_fahrenheit.rb
43
+ - test/chemistry/temperature/test_kelvin.rb
44
+ - test/chemistry/test_dsl.rb
33
45
  - test/chemistry/test_element.rb
46
+ - test/chemistry/test_temperature.rb
34
47
  - test/test_chemistry.rb
35
48
  - test/test_helper.rb
36
49
  homepage: http://isaacbfsanders.com/chemistry
@@ -47,7 +60,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
47
60
  version: '0'
48
61
  segments:
49
62
  - 0
50
- hash: -3193914091140684152
63
+ hash: -1034708689434177440
51
64
  required_rubygems_version: !ruby/object:Gem::Requirement
52
65
  none: false
53
66
  requirements:
@@ -56,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
56
69
  version: '0'
57
70
  segments:
58
71
  - 0
59
- hash: -3193914091140684152
72
+ hash: -1034708689434177440
60
73
  requirements: []
61
74
  rubyforge_project:
62
75
  rubygems_version: 1.8.24
@@ -64,7 +77,11 @@ signing_key:
64
77
  specification_version: 3
65
78
  summary: Chemistry is a toolkit for dealing with compounds
66
79
  test_files:
67
- - test/chemistry/element/test_dsl.rb
80
+ - test/chemistry/temperature/test_celsius.rb
81
+ - test/chemistry/temperature/test_fahrenheit.rb
82
+ - test/chemistry/temperature/test_kelvin.rb
83
+ - test/chemistry/test_dsl.rb
68
84
  - test/chemistry/test_element.rb
85
+ - test/chemistry/test_temperature.rb
69
86
  - test/test_chemistry.rb
70
87
  - test/test_helper.rb