advanced_math 0.0.3 → 0.0.4

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.
File without changes
@@ -0,0 +1,13 @@
1
+ advanced_math.gemspec
2
+ History.txt
3
+ lib/advanced_math.rb
4
+ Manifest.txt
5
+ pkg/adbanced_math-0.borked
6
+ pkg/adbanced_math-0.borked/advanced_math.gemspec
7
+ pkg/adbanced_math-0.borked/lib/advanced_math.rb
8
+ pkg/adbanced_math-0.borked/Manifest.txt
9
+ pkg/adbanced_math-0.borked/test/test_simple_moving_average.rb
10
+ pkg/adbanced_math-0.borked.gem
11
+ pkg/adbanced_math-0.borked.tgz
12
+ README.rdoc
13
+ test/test_simple_moving_average.rb
File without changes
@@ -0,0 +1,11 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'advanced_math'
3
+ s.version = '0.0.4'
4
+ s.date = '2011-08-25'
5
+ s.summary = "A simple gem for advanced and financial math calcualtions."
6
+ s.description = "A simple gem for advanced and financial math calcualtions."
7
+ s.authors = ["G Nagel"]
8
+ s.email = 'glenn@mercury-wireless.com'
9
+ s.files = Dir['**/*.*']
10
+ s.homepage = 'https://github.com/gnagel/mercury-wireless-public'
11
+ end
@@ -1,5 +1,57 @@
1
1
 
2
- ###
3
- # Import the Math::SimpleMovingAverage library
4
- ###
5
- require 'simple_moving_average'
2
+ module AdvancedMath
3
+
4
+ # Simple Moving Average (SMA) calculator
5
+ # Created: 2011-06-24
6
+ # Author: G Nagel
7
+ # Company: Mercury Wireless Software LLC
8
+ class SimpleMovingAverage
9
+ ###
10
+ # Initialize the members:
11
+ # range:
12
+ # number of values to average
13
+ # sum:
14
+ # current sum of all values in the array
15
+ # values:
16
+ # array of values used as temporary storage
17
+ ###
18
+ def initialize(range)
19
+ raise ArgumentError, "Range is nil" unless (range);
20
+ raise ArgumentError, "Range must be >= 1" unless range.to_i >= 1;
21
+ @range = range.to_i;
22
+ @sum = 0;
23
+ @values = Array.new();
24
+ end
25
+
26
+ ###
27
+ # Add a value to the list.
28
+ # If the list is < @range, then return nil.
29
+ # Otherwise compute the SMA and return the value.
30
+ ###
31
+ def add(value)
32
+ raise ArgumentError, "Value is nil" unless (value);
33
+
34
+ # add the value to the end of the array.
35
+ @values.push(value);
36
+
37
+ # Calculate the sum of the array
38
+ @sum += value.to_f;
39
+
40
+ # Is the array less than the range?
41
+ return nil if (@values.length() < @range)
42
+
43
+ # Is the array larger than the range?
44
+ @sum -= @values.shift.to_f() if (@values.length() > @range)
45
+
46
+ # Compute the average
47
+ return @sum.to_f / @range.to_f;
48
+ end
49
+ end
50
+
51
+ ###
52
+ # SMA is just an alias to SimpleMovingAverage
53
+ ###
54
+ class SMA < SimpleMovingAverage
55
+ end
56
+
57
+ end
@@ -0,0 +1,13 @@
1
+ advanced_math.gemspec
2
+ History.txt
3
+ lib/advanced_math.rb
4
+ Manifest.txt
5
+ pkg/adbanced_math-0.borked
6
+ pkg/adbanced_math-0.borked/advanced_math.gemspec
7
+ pkg/adbanced_math-0.borked/lib/advanced_math.rb
8
+ pkg/adbanced_math-0.borked/Manifest.txt
9
+ pkg/adbanced_math-0.borked/test/test_simple_moving_average.rb
10
+ pkg/adbanced_math-0.borked.gem
11
+ pkg/adbanced_math-0.borked.tgz
12
+ README.rdoc
13
+ test/test_simple_moving_average.rb
@@ -0,0 +1,11 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'advanced_math'
3
+ s.version = '0.0.4'
4
+ s.date = '2011-08-25'
5
+ s.summary = "A simple gem for advanced and financial math calcualtions."
6
+ s.description = "A simple gem for advanced and financial math calcualtions."
7
+ s.authors = ["G Nagel"]
8
+ s.email = 'glenn@mercury-wireless.com'
9
+ s.files = Dir['**/*.*']
10
+ s.homepage = 'https://github.com/gnagel/mercury-wireless-public'
11
+ end
@@ -1,12 +1,11 @@
1
- # Simple Moving Average (SMA) calculator
2
- # Created: 2011-06-24
3
- # Author: G Nagel
4
- # Company: Mercury Wireless Software LLC
5
1
 
6
- module Math
2
+ module AdvancedMath
7
3
 
4
+ # Simple Moving Average (SMA) calculator
5
+ # Created: 2011-06-24
6
+ # Author: G Nagel
7
+ # Company: Mercury Wireless Software LLC
8
8
  class SimpleMovingAverage
9
-
10
9
  ###
11
10
  # Initialize the members:
12
11
  # range:
@@ -39,19 +38,20 @@ module Math
39
38
  @sum += value.to_f;
40
39
 
41
40
  # Is the array less than the range?
42
- length = @values.length;
43
- if (length < @range)
44
- return nil;
45
- end
41
+ return nil if (@values.length() < @range)
46
42
 
47
43
  # Is the array larger than the range?
48
- if (length > @range)
49
- @sum -= @values.shift.to_f();
50
- end
44
+ @sum -= @values.shift.to_f() if (@values.length() > @range)
51
45
 
52
46
  # Compute the average
53
47
  return @sum.to_f / @range.to_f;
54
48
  end
55
49
  end
50
+
51
+ ###
52
+ # SMA is just an alias to SimpleMovingAverage
53
+ ###
54
+ class SMA < SimpleMovingAverage
55
+ end
56
56
 
57
57
  end
@@ -0,0 +1,51 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + "/../lib/advanced_math.rb"
3
+
4
+
5
+
6
+ class SimpleMovingAverageTest < Test::Unit::TestCase
7
+ # Verify the constructor raises an ArgumentError if the "range" is invalid
8
+ def test_sma_initialize_nil
9
+ assert_raise(ArgumentError) { AdvancedMath::SimpleMovingAverage.new(nil); }
10
+ end
11
+
12
+ # Verify the constructor raises an ArgumentError if the "range" is invalid
13
+ def test_sma_initialize_negative
14
+ assert_raise(ArgumentError) { AdvancedMath::SimpleMovingAverage.new(-1); }
15
+ end
16
+
17
+ # Verify the constructor raises an ArgumentError if the "range" is invalid
18
+ def test_sma_initialize_zero
19
+ assert_raise(ArgumentError) { AdvancedMath::SimpleMovingAverage.new(0); }
20
+ end
21
+
22
+ # Verify the constructor doesn't raise an exception if the value is positive
23
+ def test_sma_initialize_positive
24
+ (1...1000).each do |i|
25
+ assert_nothing_raised(ArgumentError) { AdvancedMath::SimpleMovingAverage.new(i); }
26
+ end
27
+ end
28
+
29
+ # Verify "add" raises an ArgumentError if the "value" is invalid
30
+ def test_sma_add_nil
31
+ assert_raise(ArgumentError) { AdvancedMath::SimpleMovingAverage.new(1).add(nil); }
32
+ end
33
+
34
+ # Verify SMA of 1, always returns the same value
35
+ def test_sma_add_1
36
+ sma = AdvancedMath::SimpleMovingAverage.new(1);
37
+ (1...1000).each do |i|
38
+ assert_equal(i, sma.add(i));
39
+ end
40
+ end
41
+
42
+ # Verify SMA of 2, always returns the same value - 0.5
43
+ def test_sma_add_2
44
+ sma = AdvancedMath::SimpleMovingAverage.new(2);
45
+ assert_equal(nil, sma.add(1));
46
+ (2...1000).each do |i|
47
+ assert_equal(i - 0.5, sma.add(i));
48
+ end
49
+ end
50
+
51
+ end
@@ -0,0 +1,51 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + "/../lib/advanced_math.rb"
3
+
4
+
5
+
6
+ class SimpleMovingAverageTest < Test::Unit::TestCase
7
+ # Verify the constructor raises an ArgumentError if the "range" is invalid
8
+ def test_sma_initialize_nil
9
+ assert_raise(ArgumentError) { AdvancedMath::SimpleMovingAverage.new(nil); }
10
+ end
11
+
12
+ # Verify the constructor raises an ArgumentError if the "range" is invalid
13
+ def test_sma_initialize_negative
14
+ assert_raise(ArgumentError) { AdvancedMath::SimpleMovingAverage.new(-1); }
15
+ end
16
+
17
+ # Verify the constructor raises an ArgumentError if the "range" is invalid
18
+ def test_sma_initialize_zero
19
+ assert_raise(ArgumentError) { AdvancedMath::SimpleMovingAverage.new(0); }
20
+ end
21
+
22
+ # Verify the constructor doesn't raise an exception if the value is positive
23
+ def test_sma_initialize_positive
24
+ (1...1000).each do |i|
25
+ assert_nothing_raised(ArgumentError) { AdvancedMath::SimpleMovingAverage.new(i); }
26
+ end
27
+ end
28
+
29
+ # Verify "add" raises an ArgumentError if the "value" is invalid
30
+ def test_sma_add_nil
31
+ assert_raise(ArgumentError) { AdvancedMath::SimpleMovingAverage.new(1).add(nil); }
32
+ end
33
+
34
+ # Verify SMA of 1, always returns the same value
35
+ def test_sma_add_1
36
+ sma = AdvancedMath::SimpleMovingAverage.new(1);
37
+ (1...1000).each do |i|
38
+ assert_equal(i, sma.add(i));
39
+ end
40
+ end
41
+
42
+ # Verify SMA of 2, always returns the same value - 0.5
43
+ def test_sma_add_2
44
+ sma = AdvancedMath::SimpleMovingAverage.new(2);
45
+ assert_equal(nil, sma.add(1));
46
+ (2...1000).each do |i|
47
+ assert_equal(i - 0.5, sma.add(i));
48
+ end
49
+ end
50
+
51
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: advanced_math
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 3
10
- version: 0.0.3
9
+ - 4
10
+ version: 0.0.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - G Nagel
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-24 00:00:00 Z
18
+ date: 2011-08-25 00:00:00 Z
19
19
  dependencies: []
20
20
 
21
21
  description: A simple gem for advanced and financial math calcualtions.
@@ -27,8 +27,18 @@ extensions: []
27
27
  extra_rdoc_files: []
28
28
 
29
29
  files:
30
- - lib/simple_moving_average.rb
30
+ - advanced_math.gemspec
31
+ - History.txt
31
32
  - lib/advanced_math.rb
33
+ - Manifest.txt
34
+ - pkg/adbanced_math-0.borked/advanced_math.gemspec
35
+ - pkg/adbanced_math-0.borked/lib/advanced_math.rb
36
+ - pkg/adbanced_math-0.borked/Manifest.txt
37
+ - pkg/adbanced_math-0.borked/test/test_simple_moving_average.rb
38
+ - pkg/adbanced_math-0.borked.gem
39
+ - pkg/adbanced_math-0.borked.tgz
40
+ - README.rdoc
41
+ - test/test_simple_moving_average.rb
32
42
  homepage: https://github.com/gnagel/mercury-wireless-public
33
43
  licenses: []
34
44
 
@@ -58,7 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
58
68
  requirements: []
59
69
 
60
70
  rubyforge_project:
61
- rubygems_version: 1.8.5
71
+ rubygems_version: 1.8.6
62
72
  signing_key:
63
73
  specification_version: 3
64
74
  summary: A simple gem for advanced and financial math calcualtions.