sbsm 1.2.6 → 1.2.7
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 +7 -0
- data/.gitignore +2 -0
- data/.travis.yml +15 -18
- data/Gemfile +8 -21
- data/History.txt +16 -0
- data/{README.txt → README.md} +16 -15
- data/Rakefile +15 -25
- data/lib/sbsm/cgi.rb +2 -1
- data/lib/sbsm/index.rb +6 -6
- data/lib/sbsm/trans_handler.rb +4 -15
- data/lib/sbsm/version.rb +3 -0
- data/sbsm.gemspec +39 -0
- data/test/suite.rb +12 -0
- data/test/test_drbserver.rb +7 -7
- data/test/test_index.rb +53 -59
- data/test/test_lookandfeel.rb +13 -15
- data/test/test_session.rb +8 -8
- data/test/test_state.rb +3 -3
- data/test/test_trans_handler.rb +26 -39
- data/test/test_user.rb +2 -2
- data/test/test_validator.rb +4 -6
- metadata +203 -87
- data/.gemtest +0 -0
- data/Gemfile.lock +0 -76
- data/lib/sbsm/flavored_uri_parser.rb +0 -48
- data/lib/sbsm/uri_parser.rb +0 -46
- data/lib/sbsm/zone_uri_parser.rb +0 -48
- data/lib/version.rb +0 -1
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7ac06f79c0abab4400ca3e02cc81f14812efc908
|
4
|
+
data.tar.gz: 99c20d773e6423627a4b419b51f6368844bf09fe
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e4ab8c7aba17a75a17e395e7e199fc2cc146e93562b1a232138bd77ac5855ffc192dc97e6685c093b3132476583eeb8c8e704d0a0d1337faa52b46b9f16a64fb
|
7
|
+
data.tar.gz: 3d7c7e67fd3df13b56f5889b6de8d1654abb4b6aca2262aa19c3045d80b1257153f8c460e6dc9958aa05f1bde1d35d80f24c6218edc10f4071d85cb860359390
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,29 +1,26 @@
|
|
1
1
|
---
|
2
2
|
language: ruby
|
3
|
+
|
3
4
|
notifications:
|
4
5
|
email:
|
5
6
|
- ngiger@ywesee.com
|
7
|
+
|
8
|
+
cache: bundler
|
9
|
+
|
10
|
+
sudo: false
|
11
|
+
|
12
|
+
before_install:
|
13
|
+
- gem --version
|
14
|
+
|
15
|
+
script: bundle exec test/suite.rb
|
16
|
+
|
6
17
|
bundler_args: --without debugger
|
18
|
+
|
7
19
|
rvm:
|
8
20
|
- ruby-head
|
9
|
-
- 2.
|
10
|
-
-
|
11
|
-
-
|
12
|
-
- 1.8.7
|
13
|
-
- rbx-19mode
|
14
|
-
- rbx-18mode
|
15
|
-
- jruby-head
|
16
|
-
- jruby-19mode
|
17
|
-
- jruby-18mode
|
18
|
-
- ree
|
21
|
+
- 2.1.7
|
22
|
+
- 2.2.3
|
23
|
+
- 2.3.0
|
19
24
|
matrix:
|
20
25
|
allow_failures:
|
21
|
-
- rvm: 2.0.0 # rmail chokes lib/rmail/address.rb:694: invalid multibyte escape
|
22
|
-
- rvm: 1.8.7 # GMT instead of UTC for some time info. Some fields have different order
|
23
26
|
- rvm: ruby-head
|
24
|
-
- rvm: rbx-19mode
|
25
|
-
- rvm: rbx-18mode
|
26
|
-
- rvm: jruby-head
|
27
|
-
- rvm: jruby-19mode
|
28
|
-
- rvm: jruby-18mode
|
29
|
-
- rvm: ree
|
data/Gemfile
CHANGED
@@ -1,25 +1,12 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
|
4
|
-
gem 'mail', '>=2.2.7'
|
5
|
-
gem 'hpricot'
|
6
|
-
# gem 'rockit', '0.3.8' Cannot find version 0.3.8 is this really needed?
|
7
|
-
|
8
|
-
group :development, :test do
|
9
|
-
gem 'rake'
|
10
|
-
gem "minitest"
|
11
|
-
gem "minitest-reporters"
|
12
|
-
gem 'hoe-travis'
|
13
|
-
gem 'simplecov'
|
14
|
-
gem 'test-unit'
|
15
|
-
end
|
16
|
-
|
17
|
-
group :development do
|
18
|
-
gem 'racc'
|
19
|
-
gem 'travis-lint'
|
20
|
-
end
|
3
|
+
gemspec
|
21
4
|
|
22
5
|
group :debugger do
|
23
|
-
|
24
|
-
|
25
|
-
|
6
|
+
if RUBY_VERSION.match(/^1/)
|
7
|
+
gem 'pry-debugger'
|
8
|
+
else
|
9
|
+
gem 'pry-byebug'
|
10
|
+
gem 'pry-doc'
|
11
|
+
end
|
12
|
+
end
|
data/History.txt
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
=== 1.2.7 / 10.05.2016
|
2
|
+
|
3
|
+
* Migration to Ruby 2.x works now
|
4
|
+
* Removed C-Interface
|
5
|
+
* Only Ruby >= 1.9 is supported
|
6
|
+
|
1
7
|
=== 1.2.6 / 02.07.2014
|
2
8
|
|
3
9
|
* Revert "Tried migrating to ruby 2.1.2"
|
@@ -10,6 +16,16 @@
|
|
10
16
|
* Use Mail instead of (outdated, last release in 2008) RMail for verification of e-mail addresses
|
11
17
|
* updated Rakefile so I can release the gem
|
12
18
|
Updated Manifest.txt
|
19
|
+
=== 1.2.5 / 25.04.2016
|
20
|
+
|
21
|
+
* Made it suitable to work with ydim-html
|
22
|
+
* Port to Ruby 2.3.0. Removed dependency to rockit and hoe.
|
23
|
+
* Prepared for travis
|
24
|
+
|
25
|
+
=== 1.2.5 / 25.11.2014
|
26
|
+
|
27
|
+
* Port to Ruby 2.1.2
|
28
|
+
* Prepared for travis
|
13
29
|
|
14
30
|
=== 1.2.4 / 05.03.2014
|
15
31
|
|
data/{README.txt → README.md}
RENAMED
@@ -1,22 +1,20 @@
|
|
1
|
-
|
1
|
+
# sbsm
|
2
2
|
|
3
|
-
*
|
3
|
+
* https://github.com/zdavatz/sbsm
|
4
4
|
|
5
|
-
|
5
|
+
## DESCRIPTION:
|
6
6
|
|
7
7
|
Application framework for state based session management
|
8
8
|
|
9
|
-
|
9
|
+
## FEATURES/PROBLEMS:
|
10
10
|
|
11
11
|
* Could be replaced by Ramaze one day. But lets see.
|
12
12
|
|
13
|
-
|
13
|
+
## REQUIREMENTS:
|
14
14
|
|
15
|
-
* Ruby
|
16
|
-
* Ruby 1.9
|
17
|
-
* Ruby 2.0
|
15
|
+
* Ruby 2.3
|
18
16
|
|
19
|
-
|
17
|
+
## INSTALL:
|
20
18
|
|
21
19
|
* gem install sbsm
|
22
20
|
|
@@ -24,19 +22,22 @@ or
|
|
24
22
|
|
25
23
|
De-Compress archive and enter its top directory. Then type:
|
26
24
|
|
27
|
-
*
|
28
|
-
*
|
29
|
-
* su
|
30
|
-
* ruby setup.rb install
|
25
|
+
* gem install bundler
|
26
|
+
* bundle exec rake install:local
|
31
27
|
|
32
28
|
You can also install files into your favorite directory by supplying setup.rb some options. Try "ruby setup.rb --help".
|
33
29
|
|
34
|
-
|
30
|
+
## TESTING
|
31
|
+
|
32
|
+
* bundle exec test/suite.rb
|
33
|
+
|
34
|
+
## DEVELOPERS:
|
35
35
|
|
36
36
|
* Masaomi Hatakeyama
|
37
37
|
* Zeno Davatz
|
38
38
|
* Hannes Wyss (upto Version 1.0)
|
39
|
+
* Niklaus Giger (Port to Ruby 2.3.0)
|
39
40
|
|
40
|
-
|
41
|
+
## LICENSE:
|
41
42
|
|
42
43
|
* GPLv2.1
|
data/Rakefile
CHANGED
@@ -1,31 +1,21 @@
|
|
1
|
-
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
require 'sbsm/version'
|
6
|
+
require "bundler/gem_tasks"
|
7
|
+
require 'rspec/core/rake_task'
|
2
8
|
|
3
|
-
|
4
|
-
require 'hoe'
|
9
|
+
RSpec::Core::RakeTask.new(:spec)
|
5
10
|
|
6
|
-
#
|
7
|
-
# Hoe.plugin :cucumberfeatures
|
8
|
-
# Hoe.plugin :gem_prelude_sucks
|
9
|
-
# Hoe.plugin :inline
|
10
|
-
# Hoe.plugin :inline
|
11
|
-
# Hoe.plugin :manifest
|
12
|
-
# Hoe.plugin :newgem
|
13
|
-
# Hoe.plugin :racc
|
14
|
-
# Hoe.plugin :rubyforge
|
15
|
-
# Hoe.plugin :rubyforge
|
16
|
-
# Hoe.plugin :website
|
11
|
+
# dependencies are now declared in sbsm.gemspec
|
17
12
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
# (delete this comment too, of course)
|
22
|
-
|
23
|
-
license('GPL v2.1')
|
24
|
-
developer('Masaomi Hatakeyama, Zeno R.R. Davatz', 'mhatakeyama@ywesee.com, zdavatz@ywesee.com')
|
25
|
-
test_globs = [ "#{File.dirname(__FILE__)}/test/test_*.rb" ]
|
13
|
+
desc 'Offer a gem task like hoe'
|
14
|
+
task :gem => :build do
|
15
|
+
Rake::Task[:build].invoke
|
26
16
|
end
|
27
17
|
|
28
|
-
|
29
|
-
#MiniTest::Reporters.use!
|
18
|
+
task :spec => :clean
|
30
19
|
|
31
|
-
|
20
|
+
require 'rake/clean'
|
21
|
+
CLEAN.include FileList['pkg/*.gem']
|
data/lib/sbsm/cgi.rb
CHANGED
@@ -75,6 +75,7 @@ class CGI
|
|
75
75
|
pretty
|
76
76
|
end
|
77
77
|
def CGI::escapeHTML(string)
|
78
|
-
|
78
|
+
s = string.to_s.frozen? ? string.to_s : string.to_s.force_encoding('UTF-8')
|
79
|
+
s.gsub(/&(?![^;]{2,6};)/, '&').gsub(/\"/, '"').gsub(/>/, '>').gsub(/</, '<')
|
79
80
|
end
|
80
81
|
end
|
data/lib/sbsm/index.rb
CHANGED
@@ -32,15 +32,15 @@ module SBSM
|
|
32
32
|
def delete(key, value)
|
33
33
|
if (key.size == 0)
|
34
34
|
@values.delete(value)
|
35
|
-
elsif (child = @children.at(key
|
35
|
+
elsif (child = @children.at(key.chars.first.ord))
|
36
36
|
child.delete(key[1..-1], value)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
def fetch(key)
|
40
40
|
if(key.size == 1)
|
41
|
-
@values + @children[key
|
42
|
-
elsif(key.size > 1 && @children.at(key
|
43
|
-
@children.at(key
|
41
|
+
@values + @children[key.chars.first.ord].to_a
|
42
|
+
elsif(key.size > 1 && @children.at(key.chars.first.ord))
|
43
|
+
@children.at(key.chars.first.ord)[key[1..-1]]
|
44
44
|
else
|
45
45
|
[]
|
46
46
|
end
|
@@ -53,8 +53,8 @@ module SBSM
|
|
53
53
|
if(key.size == 0)
|
54
54
|
@values += values
|
55
55
|
else
|
56
|
-
@children[key
|
57
|
-
@children.at(key
|
56
|
+
@children[key.chars.first.ord] ||= self.class.new
|
57
|
+
@children.at(key.chars.first.ord).store(key[1..-1], *values)
|
58
58
|
end
|
59
59
|
end
|
60
60
|
def to_a
|
data/lib/sbsm/trans_handler.rb
CHANGED
@@ -11,7 +11,8 @@ require 'yaml'
|
|
11
11
|
module SBSM
|
12
12
|
class AbstractTransHandler
|
13
13
|
attr_reader :parser_name
|
14
|
-
|
14
|
+
CONFIG_PATH = '../etc/trans_handler.yml'
|
15
|
+
|
15
16
|
@@empty_check ||= nil
|
16
17
|
@@lang_check ||= nil
|
17
18
|
@@uri_parser ||= nil
|
@@ -27,7 +28,7 @@ module SBSM
|
|
27
28
|
def config(request)
|
28
29
|
config = Hash.new { {} }
|
29
30
|
begin
|
30
|
-
path = File.expand_path(CONFIG_PATH, request.server.document_root.untaint)
|
31
|
+
path = File.expand_path(CONFIG_PATH.untaint, request.server.document_root.untaint)
|
31
32
|
path.untaint
|
32
33
|
config.update(YAML.load(File.read(path)))
|
33
34
|
config
|
@@ -78,7 +79,7 @@ module SBSM
|
|
78
79
|
ast.children_names.each { |name|
|
79
80
|
case name
|
80
81
|
when'language', 'flavor', 'event', 'zone'
|
81
|
-
|
82
|
+
# values.add(name, ast.send(name).value)
|
82
83
|
when 'variables'
|
83
84
|
ast.variables.each { |pair|
|
84
85
|
key = pair.key.value
|
@@ -133,16 +134,4 @@ module SBSM
|
|
133
134
|
super('uri')
|
134
135
|
end
|
135
136
|
end
|
136
|
-
class FlavoredTransHandler < AbstractTransHandler
|
137
|
-
include Singleton
|
138
|
-
def initialize
|
139
|
-
super('flavored_uri')
|
140
|
-
end
|
141
|
-
end
|
142
|
-
class ZoneTransHandler < AbstractTransHandler
|
143
|
-
include Singleton
|
144
|
-
def initialize
|
145
|
-
super('zone_uri')
|
146
|
-
end
|
147
|
-
end
|
148
137
|
end
|
data/lib/sbsm/version.rb
ADDED
data/sbsm.gemspec
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'sbsm/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "sbsm"
|
8
|
+
spec.version = SBSM::VERSION
|
9
|
+
spec.author = "Masaomi Hatakeyama, Zeno R.R. Davatz"
|
10
|
+
spec.email = "mhatakeyama@ywesee.com, zdavatz@ywesee.com"
|
11
|
+
spec.description = "Application framework for state based session management"
|
12
|
+
spec.summary = "Application framework for state based session management from ywesee"
|
13
|
+
spec.homepage = "https://github.com/zdavatz/sbsm"
|
14
|
+
spec.license = "GPL-v2"
|
15
|
+
spec.files = `git ls-files -z`.split("\x0")
|
16
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
+
spec.require_paths = ["lib"]
|
19
|
+
|
20
|
+
# We fix the version of the spec to newer versions only in the third position
|
21
|
+
# hoping that these version fix only security/severe bugs
|
22
|
+
# Consulted the Gemfile.lock to get
|
23
|
+
spec.add_dependency 'rack'
|
24
|
+
spec.add_dependency 'mail'
|
25
|
+
spec.add_dependency 'hpricot'
|
26
|
+
|
27
|
+
spec.add_development_dependency "bundler"
|
28
|
+
spec.add_development_dependency "rake"
|
29
|
+
spec.add_development_dependency "rspec"
|
30
|
+
spec.add_development_dependency "flexmock"
|
31
|
+
spec.add_development_dependency "minitest"
|
32
|
+
spec.add_development_dependency "rdoc"
|
33
|
+
spec.add_development_dependency "simplecov"
|
34
|
+
spec.add_development_dependency "watir"
|
35
|
+
spec.add_development_dependency "watir-webdriver"
|
36
|
+
# gem 'page-object'
|
37
|
+
|
38
|
+
end
|
39
|
+
|
data/test/suite.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# TestSuite -- ydim -- 27.01.2005 -- hwyss@ywesee.com
|
3
|
+
require 'simplecov'
|
4
|
+
|
5
|
+
$: << File.dirname(File.expand_path(__FILE__))
|
6
|
+
SimpleCov.start
|
7
|
+
|
8
|
+
Dir.foreach(File.dirname(__FILE__)) do |file|
|
9
|
+
if /^test_.*\.rb$/o.match(file)
|
10
|
+
require file
|
11
|
+
end
|
12
|
+
end
|
data/test/test_drbserver.rb
CHANGED
@@ -27,10 +27,10 @@
|
|
27
27
|
$: << File.dirname(__FILE__)
|
28
28
|
$: << File.expand_path('../lib', File.dirname(__FILE__))
|
29
29
|
|
30
|
-
require '
|
30
|
+
require 'minitest/autorun'
|
31
31
|
require 'sbsm/drbserver'
|
32
32
|
|
33
|
-
class TestDRbServer < Test
|
33
|
+
class TestDRbServer < Minitest::Test
|
34
34
|
class DRbServer < ::SBSM::DRbServer
|
35
35
|
attr_reader :sessions
|
36
36
|
CAP_MAX_THRESHOLD = 3
|
@@ -45,7 +45,7 @@ class TestDRbServer < Test::Unit::TestCase
|
|
45
45
|
assert_equal({'test1'=>ses1}, @server.sessions)
|
46
46
|
ses2 = @server['test2']
|
47
47
|
assert_instance_of(SBSM::Session, ses2)
|
48
|
-
|
48
|
+
refute_equal(ses1, ses2)
|
49
49
|
expected = {
|
50
50
|
'test1' => ses1,
|
51
51
|
'test2' => ses2,
|
@@ -53,8 +53,8 @@ class TestDRbServer < Test::Unit::TestCase
|
|
53
53
|
assert_equal(expected, @server.sessions)
|
54
54
|
ses3 = @server['test3']
|
55
55
|
assert_instance_of(SBSM::Session, ses3)
|
56
|
-
|
57
|
-
|
56
|
+
refute_equal(ses1, ses3)
|
57
|
+
refute_equal(ses2, ses3)
|
58
58
|
expected = {
|
59
59
|
'test1' => ses1,
|
60
60
|
'test2' => ses2,
|
@@ -63,8 +63,8 @@ class TestDRbServer < Test::Unit::TestCase
|
|
63
63
|
assert_equal(expected, @server.sessions)
|
64
64
|
ses4 = @server['test4']
|
65
65
|
assert_instance_of(SBSM::Session, ses4)
|
66
|
-
|
67
|
-
|
66
|
+
refute_equal(ses1, ses4)
|
67
|
+
refute_equal(ses2, ses4)
|
68
68
|
expected = {
|
69
69
|
'test2' => ses2,
|
70
70
|
'test3' => ses3,
|
data/test/test_index.rb
CHANGED
@@ -21,72 +21,66 @@
|
|
21
21
|
# ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Zürich, Switzerland
|
22
22
|
# hwyss@ywesee.com
|
23
23
|
#
|
24
|
-
# TestIndex -- sbsm -- 04.03.2003 -- hwyss@ywesee.com
|
24
|
+
# TestIndex -- sbsm -- 04.03.2003 -- hwyss@ywesee.com
|
25
25
|
|
26
26
|
$: << File.dirname(__FILE__)
|
27
27
|
$: << File.expand_path("../lib", File.dirname(__FILE__))
|
28
28
|
|
29
|
-
require '
|
29
|
+
require 'minitest/autorun'
|
30
30
|
require 'sbsm/index'
|
31
31
|
|
32
32
|
module SBSM
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
class Index
|
34
|
+
attr_accessor :values, :children
|
35
|
+
end
|
36
36
|
end
|
37
37
|
|
38
|
-
class TestIndex < Test
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
assert_equal(['bar'], @index.children[?m].children[?u].children[?h].values)
|
87
|
-
end
|
88
|
-
def test_delete
|
89
|
-
@index.delete('foo', 'bar')
|
90
|
-
assert_equal([], @index.children[?f].children[?o].children[?o].values)
|
91
|
-
end
|
38
|
+
class TestIndex < Minitest::Test
|
39
|
+
def setup
|
40
|
+
@index = SBSM::Index.new
|
41
|
+
@index.store('foo', 'bar')
|
42
|
+
@index.store('bar', 'foo')
|
43
|
+
assert_equal(['bar'], @index['foo'])
|
44
|
+
assert_equal(['foo'], @index['bar'])
|
45
|
+
end
|
46
|
+
def test_to_a
|
47
|
+
assert_equal(['foo', 'bar'], @index.to_a)
|
48
|
+
end
|
49
|
+
def test_fetch1
|
50
|
+
assert_equal(['bar'], @index.fetch('foo'))
|
51
|
+
end
|
52
|
+
def test_fetch2
|
53
|
+
assert_equal([], @index.fetch('Foo'))
|
54
|
+
end
|
55
|
+
def test_fetch3
|
56
|
+
@index.store('bar', ['foobar', 'babar'])
|
57
|
+
assert_equal(['foo', ['foobar', 'babar']], @index['ba'])
|
58
|
+
end
|
59
|
+
def test_store1
|
60
|
+
# store(key, *values)
|
61
|
+
@index.store('bar', 'babar')
|
62
|
+
assert_equal(['foo', 'babar'], @index['bar'])
|
63
|
+
assert_equal(['foo', 'babar'], @index.children['b'.ord].children['a'.ord].children['r'.ord].values)
|
64
|
+
assert_equal(['foo', 'babar'], @index['ba'])
|
65
|
+
end
|
66
|
+
def test_store2
|
67
|
+
@index.store('bar', 'foobar', 'babar')
|
68
|
+
assert_equal(['foo', 'foobar', 'babar'], @index.children['b'.ord].children['a'.ord].children['r'.ord].values)
|
69
|
+
assert_equal(['foo', 'foobar', 'babar'], @index['ba'])
|
70
|
+
end
|
71
|
+
def test_store3
|
72
|
+
@index.store('bar', ['foobar', 'babar'])
|
73
|
+
assert_equal(['foo', ['foobar', 'babar']], @index.children['b'.ord].children['a'.ord].children['r'.ord].values)
|
74
|
+
end
|
75
|
+
def test_replace
|
76
|
+
# replace(oldkey, newkey, value)
|
77
|
+
@index.replace('foo', 'muh', 'bar')
|
78
|
+
assert_equal(['bar'], @index['muh'])
|
79
|
+
assert_equal(['bar'], @index.children['m'.ord].children['u'.ord].children['h'.ord].values)
|
80
|
+
end
|
81
|
+
def test_delete
|
82
|
+
@index.delete('foo', 'bar')
|
83
|
+
assert_equal([], @index.children['f'.ord].children['o'.ord].children['o'.ord].values)
|
84
|
+
assert_equal([], @index['foo'])
|
85
|
+
end
|
92
86
|
end
|