sequitur 0.1.23 → 0.1.24

Sign up to get free protection for your applications and to get access to all the features.
@@ -8,111 +8,108 @@ require_relative '../../lib/sequitur/production_ref'
8
8
  require_relative '../../lib/sequitur/production'
9
9
 
10
10
  module Sequitur # Re-open the module to get rid of qualified names
11
- describe SymbolSequence do
12
- let(:instance) { SymbolSequence.new }
13
-
14
- context 'Creation and initialization:' do
15
- it 'should be created without argument' do
16
- expect { SymbolSequence.new }.not_to raise_error
17
- end
18
-
19
- it 'should be empty at creation' do
20
- expect(subject).to be_empty
21
- end
22
- end # context
23
-
24
- context 'Provided services:' do
25
- let(:a_prod) { Production.new }
26
-
27
- subject do
28
- an_instance = SymbolSequence.new
29
- %i[a b c].each { |a_sym| an_instance << a_sym }
30
- an_instance
31
- end
32
-
33
- it 'should deep-copy clone itself' do
34
- ref = ProductionRef.new(a_prod)
35
-
36
- a = 'a'
37
- c = 'c'
38
- [a, ref, c].each { |ch| instance << ch }
39
- clone_a = instance.clone
40
-
41
- # Check that cloning works
42
- expect(clone_a).to eq(instance)
43
-
44
- # Reference objects are distinct but points to same production
45
- expect(clone_a.symbols[1].object_id).not_to eq(instance.symbols[1])
46
-
47
- # Modifying the clone...
48
- clone_a.symbols[1] = 'diff'
49
- expect(clone_a).not_to eq(instance)
50
-
51
- # ... should leave original unchanged
52
- expect(instance.symbols[1]).to eq(ref)
53
- end
54
-
55
-
56
- it 'should tell that it is equal to itself' do
57
- # Case: Non-empty sequence
58
- expect(subject).to eq(subject)
59
-
60
- # Case: empty sequence
61
- expect(instance).to eq(instance)
62
- end
63
-
64
- it 'should know whether it is equal to another instance' do
65
- expect(instance).to eq(instance)
66
-
67
- expect(subject).not_to eq(instance)
68
- %i[a b c].each { |a_sym| instance << a_sym }
69
- expect(subject).to eq(instance)
70
-
71
- # Check that element order is relevant
72
- instance.symbols.rotate!
73
- expect(subject).not_to eq(instance)
74
- end
75
-
76
- it 'should know whether it is equal to an array' do
77
- expect(subject).to eq(%i[a b c])
78
-
79
- # Check that element order is relevant
80
- expect(subject).not_to eq(%i[c b a])
81
- end
82
-
83
- it 'should know that is not equal to something else' do
84
- expect(subject).not_to eq(:abc)
85
- end
86
-
87
-
88
- it 'should know its references' do
89
- ref = ProductionRef.new(a_prod)
90
- 2.times { subject << ref }
91
-
92
- refs = subject.references
93
- expect(refs.size).to eq(2)
94
- expect(refs).to eq([ref, ref])
95
-
96
- refs = subject.references
97
- expect(refs.size).to eq(2)
98
- expect(refs).to eq([ref, ref])
99
- specific_refs = subject.references_of(a_prod)
100
- expect(specific_refs).to eq(refs)
101
-
102
-
103
- another = Production.new
104
- another_ref = ProductionRef.new(another)
105
- subject << another_ref
106
- refs = subject.references
107
- expect(refs.size).to eq(3)
108
- expect(refs).to eq([ref, ref, another])
109
- specific_refs = subject.references_of(a_prod)
110
- expect(specific_refs).to eq([ref, ref])
111
- specific_refs = subject.references_of(another)
112
- expect(specific_refs).to eq([another])
113
- end
114
- end # context
115
- end # describe
11
+ describe SymbolSequence do
12
+ let(:instance) { SymbolSequence.new }
13
+
14
+ context 'Creation and initialization:' do
15
+ it 'should be created without argument' do
16
+ expect { SymbolSequence.new }.not_to raise_error
17
+ end
18
+
19
+ it 'should be empty at creation' do
20
+ expect(subject).to be_empty
21
+ end
22
+ end # context
23
+
24
+ context 'Provided services:' do
25
+ let(:a_prod) { Production.new }
26
+
27
+ subject do
28
+ an_instance = SymbolSequence.new
29
+ %i[a b c].each { |a_sym| an_instance << a_sym }
30
+ an_instance
31
+ end
32
+
33
+ it 'should deep-copy clone itself' do
34
+ ref = ProductionRef.new(a_prod)
35
+
36
+ a = 'a'
37
+ c = 'c'
38
+ [a, ref, c].each { |ch| instance << ch }
39
+ clone_a = instance.clone
40
+
41
+ # Check that cloning works
42
+ expect(clone_a).to eq(instance)
43
+
44
+ # Reference objects are distinct but points to same production
45
+ expect(clone_a.symbols[1].object_id).not_to eq(instance.symbols[1])
46
+
47
+ # Modifying the clone...
48
+ clone_a.symbols[1] = 'diff'
49
+ expect(clone_a).not_to eq(instance)
50
+
51
+ # ... should leave original unchanged
52
+ expect(instance.symbols[1]).to eq(ref)
53
+ end
54
+
55
+ it 'should tell that it is equal to itself' do
56
+ # Case: Non-empty sequence
57
+ expect(subject).to eq(subject)
58
+
59
+ # Case: empty sequence
60
+ expect(instance).to eq(instance)
61
+ end
62
+
63
+ it 'should know whether it is equal to another instance' do
64
+ expect(instance).to eq(instance)
65
+
66
+ expect(subject).not_to eq(instance)
67
+ %i[a b c].each { |a_sym| instance << a_sym }
68
+ expect(subject).to eq(instance)
69
+
70
+ # Check that element order is relevant
71
+ instance.symbols.rotate!
72
+ expect(subject).not_to eq(instance)
73
+ end
74
+
75
+ it 'should know whether it is equal to an array' do
76
+ expect(subject).to eq(%i[a b c])
77
+
78
+ # Check that element order is relevant
79
+ expect(subject).not_to eq(%i[c b a])
80
+ end
81
+
82
+ it 'should know that is not equal to something else' do
83
+ expect(subject).not_to eq(:abc)
84
+ end
85
+
86
+ it 'should know its references' do
87
+ ref = ProductionRef.new(a_prod)
88
+ 2.times { subject << ref }
89
+
90
+ refs = subject.references
91
+ expect(refs.size).to eq(2)
92
+ expect(refs).to eq([ref, ref])
93
+
94
+ refs = subject.references
95
+ expect(refs.size).to eq(2)
96
+ expect(refs).to eq([ref, ref])
97
+ specific_refs = subject.references_of(a_prod)
98
+ expect(specific_refs).to eq(refs)
99
+
100
+ another = Production.new
101
+ another_ref = ProductionRef.new(another)
102
+ subject << another_ref
103
+ refs = subject.references
104
+ expect(refs.size).to eq(3)
105
+ expect(refs).to eq([ref, ref, another])
106
+ specific_refs = subject.references_of(a_prod)
107
+ expect(specific_refs).to eq([ref, ref])
108
+ specific_refs = subject.references_of(another)
109
+ expect(specific_refs).to eq([another])
110
+ end
111
+ end # context
112
+ end # describe
116
113
  end # module
117
114
 
118
115
  # End of file
data/spec/spec_helper.rb CHANGED
@@ -4,7 +4,6 @@
4
4
  # Purpose: utility file that is loaded by all our RSpec files
5
5
 
6
6
  require 'rspec' # Use the RSpec framework
7
- require 'pp' # Use pretty-print for debugging purposes
8
7
 
9
8
  RSpec.configure do |config|
10
9
  config.expect_with :rspec do |c|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequitur
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.23
4
+ version: 0.1.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dimitri Geshef
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-04 00:00:00.000000000 Z
11
+ date: 2023-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -87,7 +87,6 @@ files:
87
87
  - ".rspec"
88
88
  - ".rubocop.yml"
89
89
  - ".ruby-gemset"
90
- - ".travis.yml"
91
90
  - ".yardopts"
92
91
  - CHANGELOG.md
93
92
  - Gemfile
@@ -138,14 +137,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
138
137
  requirements:
139
138
  - - ">="
140
139
  - !ruby/object:Gem::Version
141
- version: 2.5.0
140
+ version: 3.0.0
142
141
  required_rubygems_version: !ruby/object:Gem::Requirement
143
142
  requirements:
144
143
  - - ">="
145
144
  - !ruby/object:Gem::Version
146
145
  version: '0'
147
146
  requirements: []
148
- rubygems_version: 3.1.4
147
+ rubygems_version: 3.3.7
149
148
  signing_key:
150
149
  specification_version: 4
151
150
  summary: Ruby implementation of the Sequitur algorithm
data/.travis.yml DELETED
@@ -1,29 +0,0 @@
1
- language: ruby
2
- dist: trusty
3
-
4
- before_install:
5
- - gem update --system
6
- - gem install bundler
7
-
8
- script:
9
- - bundle exec rake
10
-
11
- rvm:
12
- - 2.6.3
13
- - 2.5.5
14
- - 2.4.6
15
- - 2.3.8
16
- - ruby-head
17
- - jruby-9.1.9.0
18
- - jruby-head
19
-
20
- matrix:
21
- allow_failures:
22
- - rvm: ruby-head
23
- - rvm: jruby-head
24
-
25
-
26
- # whitelist
27
- branches:
28
- only:
29
- - master