primetable 1.1.1 → 1.1.2
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 +4 -4
- data/Gemfile.lock +1 -1
- data/js/prime.js +6 -8
- data/lib/primetable.rb +3 -3
- data/lib/primetable/version.rb +1 -1
- data/spec/primetable_spec.rb +34 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 566ac4a8fea09057f10c6a0de3a8fe8e3e777f4d
|
4
|
+
data.tar.gz: 51efa22f323ae8bd1adf0c1c050e2f3533a241e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8699d55cc6edf5fc7f62a84ac132ca57c79d1f08bdb0d7726a2bcd3af4ff41d068a2ff8089be24541814feaa930b84434d8eed618bc08497a3146b998a1da4a0
|
7
|
+
data.tar.gz: 6df357240c68bbbbdc1214e328b7dd75c5c99855c1ee54c2a2ca1bcef90fa988863b35e3e813736dac32cb88b2d0c6b3ef4659e80cb9038a43a6ed6bbf3bab69
|
data/Gemfile.lock
CHANGED
data/js/prime.js
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
// LIBPRIME
|
2
|
+
// Script: prime.js
|
3
|
+
// Author: Day Davis Waterbury
|
4
|
+
// License: MIT (../LICENSE.txt)
|
5
|
+
|
1
6
|
var factors = [];
|
2
7
|
var primes = [];
|
3
8
|
|
@@ -20,7 +25,7 @@ function libPrime(method, n, count) {
|
|
20
25
|
}
|
21
26
|
return primes;
|
22
27
|
}
|
23
|
-
|
28
|
+
|
24
29
|
// We don't care about divisibility by 1, so we begin at 2
|
25
30
|
var divisor = 2;
|
26
31
|
|
@@ -77,10 +82,3 @@ function primeFactors(n) {
|
|
77
82
|
function generatePrimes(n,count) {
|
78
83
|
return libPrime("generatePrimes",n, count);
|
79
84
|
}
|
80
|
-
// Try it out
|
81
|
-
// // console.log(isPrime(1));
|
82
|
-
// console.log(generatePrimes(1999867));
|
83
|
-
// Try it out
|
84
|
-
// for (var i = 1; i < 1002; i++) {
|
85
|
-
// // console.log(i + " is " + (isPrime(i) ? "PRIME" : "COMPOSITE") + (!(isPrime(i)) ? (": " + primeFactors(i)) : ""));
|
86
|
-
// }
|
data/lib/primetable.rb
CHANGED
@@ -131,7 +131,7 @@ class PrimeTable
|
|
131
131
|
# Here we read in the file one line at a time. Yes I looked for a faster way. Try :fast (-f).
|
132
132
|
# 1) We don't want to slurp the whole file...what if the file was even larger? Not cool.
|
133
133
|
# 2) IO.readlines gets the file one line at a time, so we need a line number, not an index.
|
134
|
-
IO.readlines("data/prime.dat").each_with_index{|line,ln|
|
134
|
+
IO.readlines("#{ROOT_DIR}/data/prime.dat").each_with_index{|line,ln|
|
135
135
|
|
136
136
|
# When we find the lines we want, we concatenate them into a single array. We get extra.
|
137
137
|
if (ln >= first_line and ln <= last_line)
|
@@ -152,8 +152,8 @@ class PrimeTable
|
|
152
152
|
# One nice thing about this is that I can easily set a timeout, so if someone asks us to run
|
153
153
|
# some astronomical prime, we won't seize up the CPU forever. 7000ms is arbitrary.
|
154
154
|
calc_primes_js = V8::Context.new timeout: 7000
|
155
|
-
File.open("js/prime.js") do |file|
|
156
|
-
calc_primes_js.eval(file
|
155
|
+
File.open("#{ROOT_DIR}/js/prime.js") do |file|
|
156
|
+
calc_primes_js.eval(file)
|
157
157
|
end
|
158
158
|
primes_js = calc_primes_js.eval("generatePrimes(#{first},#{count})")
|
159
159
|
YAML::load("[#{primes_js}]")
|
data/lib/primetable/version.rb
CHANGED
data/spec/primetable_spec.rb
CHANGED
@@ -81,9 +81,18 @@ Common options:
|
|
81
81
|
expect(PrimeTable::VERSION).not_to be nil
|
82
82
|
end
|
83
83
|
|
84
|
+
it "can access the JS script for generating primes" do
|
85
|
+
expect(`head -n 1 #{ROOT_DIR}/js/prime.js`).to eq "// LIBPRIME\n"
|
86
|
+
end
|
87
|
+
|
88
|
+
it "can access the data file for pre-calculated primes" do
|
89
|
+
expect(`head -n 1 #{ROOT_DIR}/data/prime.dat`).to eq "[2,3,5,7,11,13,17,19,23,29]\n"
|
90
|
+
end
|
91
|
+
|
84
92
|
it 'executes when called on the command line' do
|
85
93
|
expect(`primetable`).to include("PrimeTable is running...\n")
|
86
94
|
end
|
95
|
+
|
87
96
|
it 'executes *and* prints out a run time when passed -t or --time' do
|
88
97
|
execution_output = `primetable -t`
|
89
98
|
expect(execution_output).to include(@expected_execution_output)
|
@@ -91,22 +100,36 @@ Common options:
|
|
91
100
|
execution_output = `primetable --time`
|
92
101
|
expect(execution_output).to include(@expected_execution_output)
|
93
102
|
expect(execution_output).to include(@expected_time_output)
|
94
|
-
end
|
103
|
+
end
|
104
|
+
|
95
105
|
it 'prints out the version number when passed -v or --version' do
|
96
|
-
|
106
|
+
execution_output = `primetable -v`
|
107
|
+
expect(execution_output).to include(@expected_version_output)
|
108
|
+
execution_output = `primetable --version`
|
109
|
+
expect(execution_output).to include(@expected_version_output)
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'it does *not* generate a table when called with *only* -v or --version' do
|
113
|
+
execution_output = `primetable -v`
|
114
|
+
expect(execution_output).not_to include(@expected_table_display_first_ten)
|
115
|
+
execution_output = `primetable --version`
|
116
|
+
expect(execution_output).not_to include(@expected_table_display_first_ten)
|
97
117
|
end
|
118
|
+
|
98
119
|
it 'executes *and* prints out a run time *and* prints out the version number when passed both -t and -v arguments' do
|
99
120
|
execution_output = `primetable -tv`
|
100
121
|
expect(execution_output).to include(@expected_execution_output)
|
101
122
|
expect(execution_output).to include(@expected_time_output)
|
102
123
|
expect(execution_output).to include(@expected_version_output)
|
103
124
|
end
|
125
|
+
|
104
126
|
it 'executes *and* prints out a run time *and* prints out the version number when passed both --time and --version arguments' do
|
105
127
|
execution_output = `primetable --time --version`
|
106
128
|
expect(execution_output).to include(@expected_execution_output)
|
107
129
|
expect(execution_output).to include(@expected_time_output)
|
108
130
|
expect(execution_output).to include(@expected_version_output)
|
109
131
|
end
|
132
|
+
|
110
133
|
it 'prints out usage details when passed -h or --help' do
|
111
134
|
execution_output = `primetable -h`
|
112
135
|
expect(execution_output).to include(@expected_help_output)
|
@@ -114,16 +137,25 @@ Common options:
|
|
114
137
|
expect(execution_output).to include(@expected_help_output)
|
115
138
|
end
|
116
139
|
|
140
|
+
it 'it does *not* generate a table when called with *only* -h or --help' do
|
141
|
+
execution_output = `primetable -h`
|
142
|
+
expect(execution_output).not_to include(@expected_table_display_first_ten)
|
143
|
+
execution_output = `primetable --help`
|
144
|
+
expect(execution_output).not_to include(@expected_table_display_first_ten)
|
145
|
+
end
|
146
|
+
|
117
147
|
it "has the right data when we run it with :load" do
|
118
148
|
test_instance = PrimeTable.new(2,10,:load,true)
|
119
149
|
expect(test_instance.primes).to eq(@expected_first_ten_primes)
|
120
150
|
expect(test_instance.table).to eq(@expected_table_with_first_ten_primes)
|
121
151
|
end
|
152
|
+
|
122
153
|
it "has the right data when we run it with :fast" do
|
123
154
|
test_instance = PrimeTable.new(2,10,:fast,true)
|
124
155
|
expect(test_instance.primes).to eq(@expected_first_ten_primes)
|
125
156
|
expect(test_instance.table).to eq(@expected_table_with_first_ten_primes)
|
126
157
|
end
|
158
|
+
|
127
159
|
it "has the right data when we run it with :calc" do
|
128
160
|
test_instance = PrimeTable.new(2,10,:calc,true)
|
129
161
|
expect(test_instance.primes).to eq(@expected_first_ten_primes)
|