sprout-ruby-aws 1.2.0
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.
- data/History.txt +38 -0
- data/LICENSE.txt +202 -0
- data/Manifest.txt +69 -0
- data/NOTICE.txt +4 -0
- data/README.txt +105 -0
- data/Rakefile +20 -0
- data/bin/ruby-aws +9 -0
- data/lib/amazon/util.rb +10 -0
- data/lib/amazon/util/binder.rb +44 -0
- data/lib/amazon/util/data_reader.rb +157 -0
- data/lib/amazon/util/filter_chain.rb +79 -0
- data/lib/amazon/util/hash_nesting.rb +93 -0
- data/lib/amazon/util/lazy_results.rb +59 -0
- data/lib/amazon/util/logging.rb +23 -0
- data/lib/amazon/util/paginated_iterator.rb +70 -0
- data/lib/amazon/util/proactive_results.rb +116 -0
- data/lib/amazon/util/threadpool.rb +129 -0
- data/lib/amazon/util/user_data_store.rb +100 -0
- data/lib/amazon/webservices/mechanical_turk.rb +117 -0
- data/lib/amazon/webservices/mechanical_turk_requester.rb +340 -0
- data/lib/amazon/webservices/mturk/mechanical_turk_error_handler.rb +136 -0
- data/lib/amazon/webservices/mturk/question_generator.rb +58 -0
- data/lib/amazon/webservices/util/amazon_authentication_relay.rb +64 -0
- data/lib/amazon/webservices/util/command_line.rb +156 -0
- data/lib/amazon/webservices/util/convenience_wrapper.rb +90 -0
- data/lib/amazon/webservices/util/filter_proxy.rb +45 -0
- data/lib/amazon/webservices/util/mock_transport.rb +70 -0
- data/lib/amazon/webservices/util/request_signer.rb +42 -0
- data/lib/amazon/webservices/util/rest_transport.rb +108 -0
- data/lib/amazon/webservices/util/soap_simplifier.rb +48 -0
- data/lib/amazon/webservices/util/soap_transport.rb +38 -0
- data/lib/amazon/webservices/util/soap_transport_header_handler.rb +27 -0
- data/lib/amazon/webservices/util/unknown_result_exception.rb +27 -0
- data/lib/amazon/webservices/util/validation_exception.rb +55 -0
- data/lib/amazon/webservices/util/xml_simplifier.rb +61 -0
- data/lib/ruby-aws.rb +21 -0
- data/lib/ruby-aws/version.rb +8 -0
- data/samples/mturk/best_image/BestImage.rb +61 -0
- data/samples/mturk/best_image/best_image.properties +39 -0
- data/samples/mturk/best_image/best_image.question +82 -0
- data/samples/mturk/blank_slate/BlankSlate.rb +63 -0
- data/samples/mturk/blank_slate/BlankSlate_multithreaded.rb +67 -0
- data/samples/mturk/helloworld/MTurkHelloWorld.rb +56 -0
- data/samples/mturk/helloworld/mturk.yml +8 -0
- data/samples/mturk/reviewer/Reviewer.rb +103 -0
- data/samples/mturk/reviewer/mturk.yml +8 -0
- data/samples/mturk/simple_survey/SimpleSurvey.rb +90 -0
- data/samples/mturk/simple_survey/simple_survey.question +30 -0
- data/samples/mturk/site_category/SiteCategory.rb +87 -0
- data/samples/mturk/site_category/externalpage.htm +71 -0
- data/samples/mturk/site_category/site_category.input +6 -0
- data/samples/mturk/site_category/site_category.properties +45 -0
- data/samples/mturk/site_category/site_category.question +9 -0
- data/test/mturk/test_changehittypeofhit.rb +130 -0
- data/test/mturk/test_error_handler.rb +135 -0
- data/test/mturk/test_mechanical_turk_requester.rb +178 -0
- data/test/mturk/test_mock_mechanical_turk_requester.rb +205 -0
- data/test/test_ruby-aws.rb +22 -0
- data/test/unit/test_binder.rb +89 -0
- data/test/unit/test_data_reader.rb +135 -0
- data/test/unit/test_exceptions.rb +32 -0
- data/test/unit/test_hash_nesting.rb +93 -0
- data/test/unit/test_lazy_results.rb +89 -0
- data/test/unit/test_mock_transport.rb +132 -0
- data/test/unit/test_paginated_iterator.rb +58 -0
- data/test/unit/test_proactive_results.rb +108 -0
- data/test/unit/test_question_generator.rb +54 -0
- data/test/unit/test_threadpool.rb +50 -0
- data/test/unit/test_user_data_store.rb +80 -0
- metadata +177 -0
@@ -0,0 +1,132 @@
|
|
1
|
+
# Copyright:: Copyright (c) 2007 Amazon Technologies, Inc.
|
2
|
+
# License:: Apache License, Version 2.0
|
3
|
+
|
4
|
+
require 'test/unit/testcase'
|
5
|
+
require 'amazon/webservices/util/mock_transport'
|
6
|
+
|
7
|
+
class TestMockTransport < Test::Unit::TestCase
|
8
|
+
include Amazon::WebServices::Util
|
9
|
+
|
10
|
+
SAMPLE_REQUEST = { :speed => :slow }
|
11
|
+
SAMPLE_ARGS = { :Auth => :fake, :Request => [SAMPLE_REQUEST] }
|
12
|
+
|
13
|
+
def setup
|
14
|
+
@mock = MockTransport.new
|
15
|
+
end
|
16
|
+
|
17
|
+
def testBasic
|
18
|
+
result = @mock.dance SAMPLE_ARGS
|
19
|
+
|
20
|
+
assert result[:OperationRequest]
|
21
|
+
assert result[:MockResult]
|
22
|
+
assert_equal SAMPLE_REQUEST, result[:MockResult][:Request]
|
23
|
+
|
24
|
+
request = @mock.call_buffer[0]
|
25
|
+
assert request
|
26
|
+
assert request.args
|
27
|
+
assert request.request
|
28
|
+
assert_equal :dance, request.name
|
29
|
+
assert_equal SAMPLE_ARGS, request.args
|
30
|
+
assert_equal SAMPLE_REQUEST, request.request
|
31
|
+
end
|
32
|
+
|
33
|
+
def testListener
|
34
|
+
@a = []
|
35
|
+
log_listener = proc { |call| @a << call }
|
36
|
+
|
37
|
+
mock = MockTransport.new :MockListener => log_listener
|
38
|
+
mock.dance SAMPLE_ARGS
|
39
|
+
|
40
|
+
assert_equal 1, @a.size
|
41
|
+
assert_equal SAMPLE_REQUEST, @a.first.request
|
42
|
+
end
|
43
|
+
|
44
|
+
def testListenerInjection
|
45
|
+
injection_listener = proc {|call| {:Param => :Injected } }
|
46
|
+
|
47
|
+
mock = MockTransport.new :MockListener => injection_listener
|
48
|
+
result = mock.dance SAMPLE_ARGS
|
49
|
+
|
50
|
+
assert_equal :Injected, result[:Param], "Should have injected our parameter"
|
51
|
+
assert result[:MockResult], "Injection should not have precluded MockResult"
|
52
|
+
end
|
53
|
+
|
54
|
+
def testMockReply
|
55
|
+
result = @mock.dance SAMPLE_ARGS
|
56
|
+
@mock.mock_reply = {:Bogus => :Fun}
|
57
|
+
result2 = @mock.dance SAMPLE_ARGS
|
58
|
+
|
59
|
+
assert result[:MockResult]
|
60
|
+
assert_nil result2[:MockResult]
|
61
|
+
|
62
|
+
assert_nil result[:Bogus]
|
63
|
+
assert result2[:Bogus]
|
64
|
+
end
|
65
|
+
|
66
|
+
def testEnumerable
|
67
|
+
|
68
|
+
# should start out with empty buffer
|
69
|
+
calls = @mock.collect { |call| call.name }
|
70
|
+
assert_equal [], calls
|
71
|
+
|
72
|
+
# now generate 3 calls
|
73
|
+
@mock.dance SAMPLE_ARGS
|
74
|
+
@mock.fall SAMPLE_ARGS
|
75
|
+
@mock.sing SAMPLE_ARGS
|
76
|
+
|
77
|
+
# ensure we got all 3 args in proper order
|
78
|
+
calls = @mock.collect { |call| call.name }
|
79
|
+
assert_equal [:dance,:fall,:sing], calls
|
80
|
+
|
81
|
+
# should be repeatable
|
82
|
+
calls = @mock.collect { |call| call.name }
|
83
|
+
assert_equal [:dance,:fall,:sing], calls
|
84
|
+
|
85
|
+
# now flush the buffer and ensure it's empty again
|
86
|
+
@mock.flush
|
87
|
+
calls = @mock.collect { |call| call.name }
|
88
|
+
assert_equal [], calls
|
89
|
+
end
|
90
|
+
|
91
|
+
def testNext
|
92
|
+
|
93
|
+
# should start out with empty buffer
|
94
|
+
assert_nil @mock.next
|
95
|
+
|
96
|
+
# make a call
|
97
|
+
@mock.dance SAMPLE_ARGS
|
98
|
+
|
99
|
+
# call shows up with #next
|
100
|
+
n = @mock.next
|
101
|
+
assert_equal :dance, n.name
|
102
|
+
|
103
|
+
# should only have been one call in the buffer
|
104
|
+
assert_nil @mock.next
|
105
|
+
|
106
|
+
# two more calls
|
107
|
+
@mock.fall SAMPLE_ARGS
|
108
|
+
@mock.sing SAMPLE_ARGS
|
109
|
+
|
110
|
+
# ensure we get them in proper order
|
111
|
+
assert_equal :fall, @mock.next.name
|
112
|
+
assert_equal :sing, @mock.next.name
|
113
|
+
|
114
|
+
# and we should have no more
|
115
|
+
assert_nil @mock.next
|
116
|
+
|
117
|
+
# after flushing, we should still have none
|
118
|
+
@mock.flush
|
119
|
+
assert_nil @mock.next
|
120
|
+
|
121
|
+
# add one more call
|
122
|
+
@mock.smile SAMPLE_ARGS
|
123
|
+
|
124
|
+
# we should have just one queued up now
|
125
|
+
assert_equal :smile, @mock.next.name
|
126
|
+
assert_nil @mock.next
|
127
|
+
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
131
|
+
|
132
|
+
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# Copyright:: Copyright (c) 2007 Amazon Technologies, Inc.
|
2
|
+
# License:: Apache License, Version 2.0
|
3
|
+
|
4
|
+
require 'test/unit/testcase'
|
5
|
+
require 'amazon/util/paginated_iterator'
|
6
|
+
|
7
|
+
class TestPaginatedIterator < Test::Unit::TestCase
|
8
|
+
include Amazon::Util
|
9
|
+
|
10
|
+
def setup
|
11
|
+
@call_count = 0
|
12
|
+
@simple_pagesize = 2
|
13
|
+
@simple_data_size = 6
|
14
|
+
@simple_data = [ [1,2],[3,4],[5,6] ]
|
15
|
+
@simple_iter = PaginatedIterator.new {|page| @call_count += 1 ; @simple_data[ page-1 ] }
|
16
|
+
end
|
17
|
+
|
18
|
+
def testNext
|
19
|
+
assert_equal 0, @call_count
|
20
|
+
@simple_data.flatten.each do |i|
|
21
|
+
assert_equal i, @simple_iter.next
|
22
|
+
end
|
23
|
+
assert_equal 3, @call_count
|
24
|
+
assert !@simple_iter.done
|
25
|
+
assert_nil @simple_iter.next
|
26
|
+
assert_equal 4, @call_count
|
27
|
+
assert @simple_iter.done
|
28
|
+
end
|
29
|
+
|
30
|
+
def testRestart
|
31
|
+
assert_equal 0, @call_count
|
32
|
+
@simple_iter.next until @simple_iter.done
|
33
|
+
assert_equal 4, @call_count
|
34
|
+
@simple_iter.restart
|
35
|
+
assert !@simple_iter.done
|
36
|
+
@simple_iter.next until @simple_iter.done
|
37
|
+
assert_equal 8, @call_count
|
38
|
+
end
|
39
|
+
|
40
|
+
def testEach
|
41
|
+
res = []
|
42
|
+
@simple_iter.each {|i| res << i }
|
43
|
+
assert_equal @simple_data.flatten, res
|
44
|
+
assert_equal 4, @call_count
|
45
|
+
assert @simple_iter.done
|
46
|
+
@simple_iter.each {|i| fail }
|
47
|
+
end
|
48
|
+
|
49
|
+
def testError
|
50
|
+
@picky_message = "picky picky picky"
|
51
|
+
@picky_iter = PaginatedIterator.new {|page| @call_count += 1 ; if page < 3 ; @simple_data[ page-1 ] ; else ; raise @picky_message ; end }
|
52
|
+
3.times { @picky_iter.next }
|
53
|
+
assert_equal 4, @picky_iter.next
|
54
|
+
e = assert_raises( RuntimeError ) { @picky_iter.next }
|
55
|
+
assert_equal @picky_message, e.message
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
# Copyright:: Copyright (c) 2007 Amazon Technologies, Inc.
|
2
|
+
# License:: Apache License, Version 2.0
|
3
|
+
|
4
|
+
require 'test/unit/testcase'
|
5
|
+
require 'amazon/util/proactive_results'
|
6
|
+
|
7
|
+
class TestProactiveResults < Test::Unit::TestCase
|
8
|
+
include Amazon::Util
|
9
|
+
|
10
|
+
def setup
|
11
|
+
@call_count = 0
|
12
|
+
@exception_count = 0
|
13
|
+
@simple_pagesize = 2
|
14
|
+
@simple_data_size = 6
|
15
|
+
@simple_data = [ [1,2],[3,4],[5,6] ]
|
16
|
+
@simple_proactive = ProactiveResults.new {|page| @call_count += 1 ; @simple_data[ page-1 ] }
|
17
|
+
end
|
18
|
+
|
19
|
+
def testBasic
|
20
|
+
assert @call_count >= 0
|
21
|
+
assert_equal @simple_data.flatten, @simple_proactive.to_a
|
22
|
+
assert_equal 6, @call_count
|
23
|
+
assert_equal @simple_data.flatten, @simple_proactive.to_a
|
24
|
+
assert_equal 6, @call_count
|
25
|
+
assert_equal Array, @simple_proactive.to_a.class
|
26
|
+
end
|
27
|
+
|
28
|
+
def testEnumerable
|
29
|
+
result = @simple_proactive.collect
|
30
|
+
assert_equal @simple_data.flatten, result
|
31
|
+
assert_equal 6, @call_count
|
32
|
+
result = @simple_proactive.collect
|
33
|
+
assert_equal @simple_data.flatten, result
|
34
|
+
assert_equal 6, @call_count
|
35
|
+
minus1 = @simple_proactive.collect {|i| i-1}
|
36
|
+
minus1.each_with_index {|i,n| assert_equal i, n }
|
37
|
+
evenodd = @simple_proactive.inject({:even => [],:odd => []}) {|a,num| a[ num % 2 == 0 ? :even : :odd ] << num ; a }
|
38
|
+
expected = {:even => [2,4,6], :odd => [1,3,5] }
|
39
|
+
assert_equal expected, evenodd
|
40
|
+
end
|
41
|
+
|
42
|
+
def testIncremental
|
43
|
+
count = 0
|
44
|
+
remaining = @simple_data.flatten
|
45
|
+
@simple_proactive.each { |value|
|
46
|
+
assert_not_nil value
|
47
|
+
assert_not_nil remaining.delete( value )
|
48
|
+
assert @call_count >= (count / @simple_pagesize)+1
|
49
|
+
count += 1
|
50
|
+
}
|
51
|
+
assert_equal 6, count
|
52
|
+
assert_equal 6, @call_count
|
53
|
+
end
|
54
|
+
|
55
|
+
def testRandomAccess
|
56
|
+
assert [2,4,6].member?( @simple_proactive[3] )
|
57
|
+
assert @call_count >= 2
|
58
|
+
assert_nil @simple_proactive[@simple_data_size]
|
59
|
+
assert_equal 6, @call_count
|
60
|
+
10.times do
|
61
|
+
index = rand(@simple_data_size+@simple_pagesize)
|
62
|
+
if index >= @simple_data_size
|
63
|
+
assert_nil @simple_proactive[index]
|
64
|
+
else
|
65
|
+
if index % 2 == 0
|
66
|
+
assert [1,3,5].member?( @simple_proactive[index] )
|
67
|
+
else
|
68
|
+
assert [2,4,6].member?( @simple_proactive[index] )
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
assert_equal 6, @call_count
|
73
|
+
assert_equal @simple_data.flatten, @simple_proactive.to_a.sort
|
74
|
+
end
|
75
|
+
|
76
|
+
def testFlush
|
77
|
+
@simple_proactive.to_a
|
78
|
+
@simple_proactive.to_a
|
79
|
+
assert_equal 6, @call_count
|
80
|
+
@simple_proactive.flush
|
81
|
+
@simple_proactive.to_a
|
82
|
+
assert_equal 12, @call_count
|
83
|
+
end
|
84
|
+
|
85
|
+
def testError
|
86
|
+
@picky_message = "picky picky picky"
|
87
|
+
exception_count = 0
|
88
|
+
@picky_proactive = ProactiveResults.new(Proc.new {|i| exception_count += 1 }) do |page|
|
89
|
+
@call_count += 1
|
90
|
+
if page < 3
|
91
|
+
@simple_data[ page-1 ]
|
92
|
+
else
|
93
|
+
raise @picky_message
|
94
|
+
end
|
95
|
+
end
|
96
|
+
assert_equal @simple_data.flatten[0..3], @picky_proactive.to_a
|
97
|
+
assert_equal 3, exception_count
|
98
|
+
end
|
99
|
+
|
100
|
+
def testImmutability
|
101
|
+
assert_equal 3, @simple_proactive[2]
|
102
|
+
a = @simple_proactive.to_a
|
103
|
+
assert_equal 3, a[2]
|
104
|
+
a[2] = 7
|
105
|
+
assert_equal 3, @simple_proactive[2]
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# Copyright:: Copyright (c) 2007 Amazon Technologies, Inc.
|
2
|
+
# License:: Apache License, Version 2.0
|
3
|
+
|
4
|
+
require 'test/unit/testcase'
|
5
|
+
require 'amazon/webservices/mturk/question_generator'
|
6
|
+
|
7
|
+
class TestQuestionGenerator < Test::Unit::TestCase
|
8
|
+
include Amazon::WebServices::MTurk
|
9
|
+
|
10
|
+
def testBuilder
|
11
|
+
xml = QuestionGenerator.build { |gen| gen.ask "What color is the sky?" }
|
12
|
+
assert_equal String, xml.class
|
13
|
+
assert !xml.empty?
|
14
|
+
assert xml =~ /What color is the sky/
|
15
|
+
end
|
16
|
+
|
17
|
+
def testXmlEscaping
|
18
|
+
xml = QuestionGenerator.build{ |gen| gen.ask "Is 1 > 2 & < 7 ?" }
|
19
|
+
assert xml =~ /<Text>(.*)<\/Text>/
|
20
|
+
escaped_text = $1
|
21
|
+
assert_equal "Is 1 > 2 & < 7 ?", escaped_text
|
22
|
+
end
|
23
|
+
|
24
|
+
def testValidXML
|
25
|
+
xml = QuestionGenerator.build{ |gen| gen.ask "who loves chocolate most?" }
|
26
|
+
require 'rexml/document'
|
27
|
+
# REXML will throw an exception if the xml is invalid / malformatted
|
28
|
+
valid = REXML::Document.new(xml)
|
29
|
+
end
|
30
|
+
|
31
|
+
def testAlternateInvocations
|
32
|
+
myQuestion = "how many tuna fit in a can?"
|
33
|
+
|
34
|
+
built = QuestionGenerator.build { |gen| gen.ask myQuestion }
|
35
|
+
built_basic = QuestionGenerator.build( :Basic ) { |gen| gen.ask myQuestion }
|
36
|
+
built_askbasic = QuestionGenerator.build { |gen| gen.askBasic myQuestion }
|
37
|
+
|
38
|
+
defaultgen = QuestionGenerator.new
|
39
|
+
defaultgen.ask myQuestion
|
40
|
+
obj = defaultgen.to_xml
|
41
|
+
|
42
|
+
defaultgen = QuestionGenerator.new
|
43
|
+
defaultgen.askBasic myQuestion
|
44
|
+
obj_askbasic = defaultgen.to_xml
|
45
|
+
|
46
|
+
basicgen = QuestionGenerator.new( :Basic )
|
47
|
+
basicgen.ask myQuestion
|
48
|
+
obj_basic = basicgen.to_xml
|
49
|
+
|
50
|
+
# all methods should generate the exact same string
|
51
|
+
[built_basic,built_askbasic,obj,obj_askbasic,obj_basic].each { |comp| assert_equal built, comp }
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# Copyright:: Copyright (c) 2007 Amazon Technologies, Inc.
|
2
|
+
# License:: Apache License, Version 2.0
|
3
|
+
|
4
|
+
require 'amazon/util/threadpool'
|
5
|
+
|
6
|
+
class TestThreadpool < Test::Unit::TestCase
|
7
|
+
include Amazon::Util
|
8
|
+
|
9
|
+
def setup
|
10
|
+
@tp = ThreadPool.new 5
|
11
|
+
end
|
12
|
+
|
13
|
+
def teardown
|
14
|
+
@tp.finish
|
15
|
+
end
|
16
|
+
|
17
|
+
def testNothing
|
18
|
+
assert true
|
19
|
+
end
|
20
|
+
|
21
|
+
def testDoSomething
|
22
|
+
@tp.addWork { sleep(0.1) }
|
23
|
+
assert true
|
24
|
+
end
|
25
|
+
|
26
|
+
def testSimple
|
27
|
+
q = Queue.new
|
28
|
+
|
29
|
+
5.times {|t| @tp.addWork(t) {|i| sleep(rand(4)*0.1) ; q << i } }
|
30
|
+
@tp.finish
|
31
|
+
|
32
|
+
s = []
|
33
|
+
5.times { s << q.pop }
|
34
|
+
assert_equal [0,1,2,3,4], s.sort
|
35
|
+
end
|
36
|
+
|
37
|
+
def testSync
|
38
|
+
s = []
|
39
|
+
|
40
|
+
5.times { |t| @tp.addWork(t) {|i| s << i } }
|
41
|
+
@tp.sync
|
42
|
+
assert_equal [0,1,2,3,4], s.sort
|
43
|
+
5.times { |t| @tp.addWork(t) {|i| s << i+5 } }
|
44
|
+
@tp.sync
|
45
|
+
|
46
|
+
assert_equal [0,1,2,3,4], s[0,5].sort
|
47
|
+
assert_equal [5,6,7,8,9], s[5,5].sort
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# Copyright:: Copyright (c) 2007 Amazon Technologies, Inc.
|
2
|
+
# License:: Apache License, Version 2.0
|
3
|
+
|
4
|
+
require 'test/unit/testcase'
|
5
|
+
require 'amazon/util/binder'
|
6
|
+
require 'tempfile'
|
7
|
+
require 'fileutils'
|
8
|
+
|
9
|
+
class TestUserDataStore < Test::Unit::TestCase
|
10
|
+
include Amazon::Util
|
11
|
+
|
12
|
+
def setup
|
13
|
+
@tmpfile = Tempfile.new('RubyAWSTesting')
|
14
|
+
@fakehome = @tmpfile.path + 'homedir'
|
15
|
+
FileUtils.mkdir( @fakehome )
|
16
|
+
ENV['TEST_HOME_OVERRIDE'] = @fakehome
|
17
|
+
end
|
18
|
+
|
19
|
+
def teardown
|
20
|
+
ENV.delete 'TEST_HOME_OVERRIDE'
|
21
|
+
FileUtils.remove_dir( @fakehome )
|
22
|
+
@tmpfile = nil
|
23
|
+
end
|
24
|
+
|
25
|
+
def testSimpleValue
|
26
|
+
store = UserDataStore.new('TEST_MTURK')
|
27
|
+
store.set( :pudding, :color, 'yellow' )
|
28
|
+
store.save
|
29
|
+
|
30
|
+
store2 = UserDataStore.new('TEST_MTURK')
|
31
|
+
color = store.get :pudding, :color
|
32
|
+
|
33
|
+
assert_equal 'yellow', color, 'pudding was the wrong color'
|
34
|
+
end
|
35
|
+
|
36
|
+
def testEmpty
|
37
|
+
store = UserDataStore.new('TEST_MTURK')
|
38
|
+
color = store.get :pudding, :color
|
39
|
+
assert_nil color
|
40
|
+
end
|
41
|
+
|
42
|
+
def testClear
|
43
|
+
store = UserDataStore.new('TEST_MTURK')
|
44
|
+
store.set( :pudding, :color, 'green' )
|
45
|
+
store.set( :pudding, :smell, 'sweet' )
|
46
|
+
store.save
|
47
|
+
|
48
|
+
store.clear(:pudding)
|
49
|
+
store.save
|
50
|
+
|
51
|
+
store2 = UserDataStore.new('TEST_MTURK')
|
52
|
+
assert_nil store.get(:pudding,:color)
|
53
|
+
assert_nil store.get(:pudding,:smell)
|
54
|
+
end
|
55
|
+
|
56
|
+
def testClearPartial
|
57
|
+
store = UserDataStore.new('TEST_MTURK')
|
58
|
+
store.set( :pudding, :color, 'pink' )
|
59
|
+
store.set( :pudding, :smell, 'sour' )
|
60
|
+
store.save
|
61
|
+
|
62
|
+
store.clear(:pudding,:smell)
|
63
|
+
store.save
|
64
|
+
|
65
|
+
store2 = UserDataStore.new('TEST_MTURK')
|
66
|
+
assert_equal 'pink', store.get(:pudding,:color)
|
67
|
+
assert_nil store.get(:pudding,:smell)
|
68
|
+
end
|
69
|
+
|
70
|
+
def testNamespaces
|
71
|
+
store = UserDataStore.new('TEST_MTURK')
|
72
|
+
store.set( :pudding, :color, 'purple' )
|
73
|
+
|
74
|
+
same_namespaces = [ :Pudding, :PUDDING, :pUDDING, 'pudding', 'PUDDING', 'PuDDinG' ]
|
75
|
+
same_namespaces.each do |ns|
|
76
|
+
assert_equal 'purple', store.get(ns,:color)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|