sequitur 0.1.23 → 0.1.24

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.
@@ -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