amp-core 0.1.0 → 0.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/Gemfile +1 -0
- data/VERSION +1 -1
- data/lib/amp-core.rb +28 -46
- data/lib/amp-core/amp_plugin.rb +16 -0
- data/lib/amp-core/commands/info.rb +9 -0
- data/lib/amp-core/commands/root.rb +6 -0
- data/lib/amp-core/support/{string_utils.rb → hex_string.rb} +75 -30
- data/spec/plugin_spec.rb +23 -0
- data/spec/repository_specs/repository_spec.rb +0 -1
- data/spec/spec_helper.rb +0 -2
- data/spec/support_specs/hex_string_spec.rb +112 -0
- data/test/test_templates.rb +0 -1
- metadata +11 -8
- data/spec/amp-core_spec.rb +0 -11
- data/spec/support_specs/string_utils_spec.rb +0 -44
data/Gemfile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/amp-core.rb
CHANGED
@@ -1,53 +1,35 @@
|
|
1
|
+
puts "Loading amp-core..."
|
2
|
+
|
3
|
+
require 'amp-core/command_ext/repository_loading'
|
4
|
+
require 'amp-core/repository/repository.rb'
|
5
|
+
require 'amp-core/repository/generic_repo_picker.rb'
|
6
|
+
|
7
|
+
Dir[File.join(File.dirname(__FILE__), 'amp-core', 'commands', '**', '*.rb')].each do |file|
|
8
|
+
require file
|
9
|
+
end
|
10
|
+
|
1
11
|
module Amp
|
2
|
-
module Core
|
3
|
-
end
|
4
12
|
module Support
|
13
|
+
autoload :Template, 'amp-core/templates/template.rb'
|
5
14
|
end
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
autoload :AbstractChangeset, 'amp-core/repository/abstract/abstract_changeset.rb'
|
19
|
-
autoload :AbstractVersionedFile, 'amp-core/repository/abstract/abstract_versioned_file.rb'
|
20
|
-
autoload :CommonChangesetMethods, 'amp-core/repository/abstract/common_methods/changeset.rb'
|
21
|
-
autoload :CommonLocalRepoMethods, 'amp-core/repository/abstract/common_methods/local_repo.rb'
|
22
|
-
autoload :CommonStagingAreaMethods, 'amp-core/repository/abstract/common_methods/staging_area.rb'
|
23
|
-
autoload :CommonChangesetMethods, 'amp-core/repository/abstract/common_methods/changeset.rb'
|
24
|
-
autoload :CommonVersionedFileMethods,'amp-core/repository/abstract/common_methods/versioned_file.rb'
|
25
|
-
end
|
26
|
-
module Support
|
27
|
-
autoload :EncodingUtils, 'amp-core/support/encoding_utils.rb'
|
28
|
-
autoload :Platform, 'amp-core/support/platform_utils.rb'
|
29
|
-
autoload :RootedOpener, 'amp-core/support/rooted_opener.rb'
|
30
|
-
autoload :StringUtils, 'amp-core/support/string_utils.rb'
|
31
|
-
end
|
32
|
-
end
|
15
|
+
module Core
|
16
|
+
module Repositories
|
17
|
+
autoload :GenericRepoPicker, 'amp-core/repository/generic_repo_picker.rb'
|
18
|
+
autoload :AbstractLocalRepository, 'amp-core/repository/abstract/abstract_local_repo.rb'
|
19
|
+
autoload :AbstractStagingArea, 'amp-core/repository/abstract/abstract_staging_area.rb'
|
20
|
+
autoload :AbstractChangeset, 'amp-core/repository/abstract/abstract_changeset.rb'
|
21
|
+
autoload :AbstractVersionedFile, 'amp-core/repository/abstract/abstract_versioned_file.rb'
|
22
|
+
autoload :CommonChangesetMethods, 'amp-core/repository/abstract/common_methods/changeset.rb'
|
23
|
+
autoload :CommonLocalRepoMethods, 'amp-core/repository/abstract/common_methods/local_repo.rb'
|
24
|
+
autoload :CommonStagingAreaMethods, 'amp-core/repository/abstract/common_methods/staging_area.rb'
|
25
|
+
autoload :CommonChangesetMethods, 'amp-core/repository/abstract/common_methods/changeset.rb'
|
26
|
+
autoload :CommonVersionedFileMethods,'amp-core/repository/abstract/common_methods/versioned_file.rb'
|
33
27
|
end
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
def initialize(opts={})
|
40
|
-
@opts = opts
|
41
|
-
end
|
42
|
-
|
43
|
-
def load!
|
44
|
-
puts "Loading amp-core..."
|
45
|
-
require 'amp-core/command_ext/repository_loading'
|
46
|
-
require 'amp-core/repository/repository.rb'
|
47
|
-
require 'amp-core/repository/generic_repo_picker.rb'
|
48
|
-
::Amp::Support.class_eval do
|
49
|
-
autoload :Template, "amp-core/templates/template.rb"
|
28
|
+
module Support
|
29
|
+
autoload :EncodingUtils, 'amp-core/support/encoding_utils.rb'
|
30
|
+
autoload :Platform, 'amp-core/support/platform_utils.rb'
|
31
|
+
autoload :RootedOpener, 'amp-core/support/rooted_opener.rb'
|
32
|
+
autoload :HexString, 'amp-core/support/hex_string.rb'
|
50
33
|
end
|
51
|
-
self.class.loader.call
|
52
34
|
end
|
53
35
|
end
|
@@ -19,26 +19,76 @@ module Amp
|
|
19
19
|
# This module is a set of string functions that we use frequently.
|
20
20
|
# They sued to be monkey-patched onto the String class, but we don't
|
21
21
|
# do that anymore.
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
class HexString
|
23
|
+
# Construct a HexString
|
24
|
+
def self.from_bin(bin)
|
25
|
+
HexString === bin ? bin : new(bin, nil)
|
26
|
+
end
|
27
|
+
|
28
|
+
# Construct a HexString
|
29
|
+
def self.from_hex(hex)
|
30
|
+
HexString === hex ? hex : new(nil, hex)
|
31
|
+
end
|
32
|
+
|
33
|
+
# Mainly internal/test helper method; change the encoding in 1.9
|
34
|
+
def self.as_binary(s)
|
35
|
+
if s.respond_to?(:force_encoding)
|
36
|
+
s.force_encoding('binary')
|
37
|
+
else
|
38
|
+
s
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.sha1(str)
|
43
|
+
HexString.from_bin(Digest::SHA1.new.update(str).digest)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Assumes one or the other argument will be nil.
|
47
|
+
# Mostly an internal constructor
|
48
|
+
def initialize(binary_part, hex_part)
|
49
|
+
@binary = self.class.as_binary(binary_part)
|
50
|
+
@hex = hex_part
|
51
|
+
end
|
52
|
+
|
53
|
+
def <=>(other)
|
54
|
+
to_s <=> other.to_s
|
55
|
+
end
|
56
|
+
include Comparable
|
57
|
+
|
58
|
+
# Return raw binary data
|
59
|
+
def to_bin
|
60
|
+
@binary ||= unhexlify
|
61
|
+
end
|
62
|
+
|
63
|
+
# Return hexidecimal representation of binary data
|
64
|
+
def to_hex
|
65
|
+
@hex ||= hexlify
|
66
|
+
end
|
67
|
+
|
68
|
+
# Return hexidecimal representation of binary data
|
69
|
+
alias_method :to_s, :to_hex
|
70
|
+
|
25
71
|
# Converts this text into hex. each letter is replaced with
|
26
72
|
# it's hex counterpart
|
27
|
-
def hexlify
|
28
|
-
|
29
|
-
|
30
|
-
|
73
|
+
def hexlify
|
74
|
+
hex = ""
|
75
|
+
@binary.each_byte do |i|
|
76
|
+
hex << i.to_s(16).rjust(2, "0")
|
31
77
|
end
|
32
|
-
|
78
|
+
hex
|
79
|
+
end
|
80
|
+
|
81
|
+
def empty?
|
82
|
+
to_bin.size == 0
|
33
83
|
end
|
34
84
|
|
35
85
|
if RUBY_VERSION < "1.9"
|
36
86
|
# Returns the value of the first byte of the string.
|
37
87
|
#
|
38
88
|
# @return [Fixnum, 0 <= x < 256] The value of the first byte.
|
39
|
-
def ord
|
40
|
-
raise ArgumentError.new('empty string') if
|
41
|
-
|
89
|
+
def ord
|
90
|
+
raise ArgumentError.new('empty string') if to_bin.empty?
|
91
|
+
to_bin[0]
|
42
92
|
end
|
43
93
|
##
|
44
94
|
# Converts a string of hex into the binary values it represents. This is used for
|
@@ -46,40 +96,35 @@ module Amp
|
|
46
96
|
#
|
47
97
|
# @example StringUtils.unhexlify("DEADBEEF") #=> "\336\255\276\357"
|
48
98
|
# @return [String] the string decoded from hex form
|
49
|
-
def unhexlify
|
50
|
-
|
99
|
+
def unhexlify
|
100
|
+
bin = "\000" * (@hex.size/2)
|
51
101
|
c = 0
|
52
|
-
(0
|
53
|
-
|
54
|
-
|
102
|
+
(0..@hex.size-2).step(2) do |i|
|
103
|
+
byte = @hex[i,2].to_i(16)
|
104
|
+
bin[c] = byte
|
55
105
|
c += 1
|
56
106
|
end
|
57
|
-
|
107
|
+
bin
|
58
108
|
end
|
59
109
|
else
|
60
110
|
# Returns the value of the first byte of the string.
|
61
111
|
#
|
62
112
|
# @return [Fixnum, 0 <= x < 256] The value of the first byte.
|
63
|
-
def ord
|
64
|
-
|
65
|
-
str.ord
|
113
|
+
def ord
|
114
|
+
to_bin.ord
|
66
115
|
end
|
67
116
|
|
68
|
-
def unhexlify
|
69
|
-
|
117
|
+
def unhexlify
|
118
|
+
bin = "\000" * (@hex.size/2)
|
70
119
|
c = 0
|
71
|
-
(0
|
72
|
-
|
73
|
-
|
120
|
+
(0..@hex.size-2).step(2) do |i|
|
121
|
+
byte = @hex[i,2].to_i(16)
|
122
|
+
bin[c] = byte.chr
|
74
123
|
c += 1
|
75
124
|
end
|
76
|
-
|
125
|
+
bin
|
77
126
|
end
|
78
127
|
end
|
79
|
-
|
80
|
-
def sha1(str)
|
81
|
-
Digest::SHA1.new.update(str)
|
82
|
-
end
|
83
128
|
end
|
84
129
|
end
|
85
130
|
end
|
data/spec/plugin_spec.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
|
+
|
4
|
+
require '../amp-front/lib/amp-front'
|
5
|
+
require 'amp-core/amp_plugin'
|
6
|
+
|
7
|
+
describe "plugin" do
|
8
|
+
it "should have a plugin constant: Amp::Plugins::Core" do
|
9
|
+
result = nil
|
10
|
+
Amp::Plugins.class_eval do
|
11
|
+
result = const_defined?(:Core)
|
12
|
+
end
|
13
|
+
result.should be_true
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should load the plugin' do
|
17
|
+
plugin = Amp::Plugins::Core.new
|
18
|
+
# this is entirely too white-box, but other tests already loaded everything
|
19
|
+
# mucking with the environment would be kind of messy
|
20
|
+
plugin.should_receive(:require)
|
21
|
+
plugin.load!
|
22
|
+
end
|
23
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,112 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# chosen as something that forces the subject to deal with encodings
|
3
|
+
##################################################################
|
4
|
+
# Licensing Information #
|
5
|
+
# #
|
6
|
+
# The following code is licensed, as standalone code, under #
|
7
|
+
# the Ruby License, unless otherwise directed within the code. #
|
8
|
+
# #
|
9
|
+
# For information on the license of this code when distributed #
|
10
|
+
# with and used in conjunction with the other modules in the #
|
11
|
+
# Amp project, please see the root-level LICENSE file. #
|
12
|
+
# #
|
13
|
+
# © Michael J. Edgar and Ari Brown, 2009-2010 #
|
14
|
+
# #
|
15
|
+
##################################################################
|
16
|
+
|
17
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
|
18
|
+
|
19
|
+
describe Amp::Core::Support::HexString do
|
20
|
+
Subject = Amp::Core::Support::HexString
|
21
|
+
describe 'created from binary data' do
|
22
|
+
it 'can be created without error' do
|
23
|
+
Subject.from_bin('A').should be_kind_of(Subject)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'is compareable' do
|
27
|
+
Subject.from_bin('A').should == Subject.from_bin('A')
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'is compareable and right' do
|
31
|
+
Subject.from_bin('A').should_not == Subject.from_bin('B')
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '#ord' do
|
35
|
+
it 'raises an ArgumentError on an empty string' do
|
36
|
+
lambda { Subject.from_bin('').ord }.should raise_error(ArgumentError)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'returns the first byte of a simple character' do
|
40
|
+
Subject.from_bin('A').ord.should == 65
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'returns the first byte of a complex character' do
|
44
|
+
Subject.from_bin('™').ord.should == 226
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe '#to_bin' do
|
49
|
+
it 'maintains itself' do
|
50
|
+
Subject.from_bin('abcd').to_bin.should == "abcd"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe '#to_hex' do
|
55
|
+
it 'converts text data to its hex form' do
|
56
|
+
Subject.from_bin('ABCD').to_hex.should == '41424344'
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe '#to_s' do
|
61
|
+
it 'same result as to_hex' do
|
62
|
+
s = Subject.from_bin('ABCD')
|
63
|
+
s.to_s.should == s.to_hex
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe 'created from hex string' do
|
69
|
+
it 'can be created without error' do
|
70
|
+
Subject.from_hex('ab').should be_kind_of(Subject)
|
71
|
+
end
|
72
|
+
|
73
|
+
describe '#ord' do
|
74
|
+
it 'raises an ArgumentError on an empty string' do
|
75
|
+
lambda { Subject.new('').ord }.should raise_error(ArgumentError)
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'returns the first byte of a simple character' do
|
79
|
+
Subject.from_hex('41').ord.should == 65
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'returns the first byte of a complex character' do
|
83
|
+
Subject.from_hex('e2').ord.should == 226
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
describe '#to_bin' do
|
88
|
+
it 'converts a few hex bytes to binary' do
|
89
|
+
Subject.from_hex('abcd').to_bin.should == Subject.as_binary("\xab\xcd")
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe '#to_hex' do
|
94
|
+
it 'maintains itself' do
|
95
|
+
Subject.from_hex('ABCD').to_hex.should == 'ABCD'
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
describe '#to_s' do
|
100
|
+
it 'same result as to_hex' do
|
101
|
+
s = Subject.from_hex('ABCD')
|
102
|
+
s.to_s.should == s.to_hex
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
describe '::sha1' do
|
108
|
+
it 'creates a HexString' do
|
109
|
+
Subject.sha1('A').should be_kind_of(Subject)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
data/test/test_templates.rb
CHANGED
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
7
|
+
- 2
|
8
8
|
- 0
|
9
|
-
version: 0.
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Michael Edgar
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-11-
|
17
|
+
date: 2010-11-11 00:00:00 -06:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -79,7 +79,10 @@ files:
|
|
79
79
|
- features/step_definitions/amp-core_steps.rb
|
80
80
|
- features/support/env.rb
|
81
81
|
- lib/amp-core.rb
|
82
|
+
- lib/amp-core/amp_plugin.rb
|
82
83
|
- lib/amp-core/command_ext/repository_loading.rb
|
84
|
+
- lib/amp-core/commands/info.rb
|
85
|
+
- lib/amp-core/commands/root.rb
|
83
86
|
- lib/amp-core/repository/abstract/abstract_changeset.rb
|
84
87
|
- lib/amp-core/repository/abstract/abstract_local_repo.rb
|
85
88
|
- lib/amp-core/repository/abstract/abstract_staging_area.rb
|
@@ -91,9 +94,9 @@ files:
|
|
91
94
|
- lib/amp-core/repository/generic_repo_picker.rb
|
92
95
|
- lib/amp-core/repository/repository.rb
|
93
96
|
- lib/amp-core/support/encoding_utils.rb
|
97
|
+
- lib/amp-core/support/hex_string.rb
|
94
98
|
- lib/amp-core/support/platform_utils.rb
|
95
99
|
- lib/amp-core/support/rooted_opener.rb
|
96
|
-
- lib/amp-core/support/string_utils.rb
|
97
100
|
- lib/amp-core/templates/git/blank.log.erb
|
98
101
|
- lib/amp-core/templates/git/default.log.erb
|
99
102
|
- lib/amp-core/templates/mercurial/blank.commit.erb
|
@@ -101,17 +104,17 @@ files:
|
|
101
104
|
- lib/amp-core/templates/mercurial/default.commit.erb
|
102
105
|
- lib/amp-core/templates/mercurial/default.log.erb
|
103
106
|
- lib/amp-core/templates/template.rb
|
104
|
-
- spec/amp-core_spec.rb
|
105
107
|
- spec/command_ext_specs/repository_loading_spec.rb
|
106
108
|
- spec/command_ext_specs/spec_helper.rb
|
109
|
+
- spec/plugin_spec.rb
|
107
110
|
- spec/repository_specs/repository_spec.rb
|
108
111
|
- spec/repository_specs/spec_helper.rb
|
109
112
|
- spec/spec.opts
|
110
113
|
- spec/spec_helper.rb
|
111
114
|
- spec/support_specs/encoding_utils_spec.rb
|
115
|
+
- spec/support_specs/hex_string_spec.rb
|
112
116
|
- spec/support_specs/platform_utils_spec.rb
|
113
117
|
- spec/support_specs/spec_helper.rb
|
114
|
-
- spec/support_specs/string_utils_spec.rb
|
115
118
|
- test/test_templates.rb
|
116
119
|
has_rdoc: true
|
117
120
|
homepage: http://github.com/michaeledgar/amp-core
|
@@ -144,14 +147,14 @@ signing_key:
|
|
144
147
|
specification_version: 3
|
145
148
|
summary: The core plugin for Amp. Necessary for Amp to function.
|
146
149
|
test_files:
|
147
|
-
- spec/amp-core_spec.rb
|
148
150
|
- spec/command_ext_specs/repository_loading_spec.rb
|
149
151
|
- spec/command_ext_specs/spec_helper.rb
|
152
|
+
- spec/plugin_spec.rb
|
150
153
|
- spec/repository_specs/repository_spec.rb
|
151
154
|
- spec/repository_specs/spec_helper.rb
|
152
155
|
- spec/spec_helper.rb
|
153
156
|
- spec/support_specs/encoding_utils_spec.rb
|
157
|
+
- spec/support_specs/hex_string_spec.rb
|
154
158
|
- spec/support_specs/platform_utils_spec.rb
|
155
159
|
- spec/support_specs/spec_helper.rb
|
156
|
-
- spec/support_specs/string_utils_spec.rb
|
157
160
|
- test/test_templates.rb
|
data/spec/amp-core_spec.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
-
|
3
|
-
describe "amp-core" do
|
4
|
-
it "should have a plugin constant: Amp::Plugins::Core" do
|
5
|
-
result = nil
|
6
|
-
Amp::Plugins.class_eval do
|
7
|
-
result = const_defined?(:Core)
|
8
|
-
end
|
9
|
-
result.should be_true
|
10
|
-
end
|
11
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
##################################################################
|
2
|
-
# Licensing Information #
|
3
|
-
# #
|
4
|
-
# The following code is licensed, as standalone code, under #
|
5
|
-
# the Ruby License, unless otherwise directed within the code. #
|
6
|
-
# #
|
7
|
-
# For information on the license of this code when distributed #
|
8
|
-
# with and used in conjunction with the other modules in the #
|
9
|
-
# Amp project, please see the root-level LICENSE file. #
|
10
|
-
# #
|
11
|
-
# © Michael J. Edgar and Ari Brown, 2009-2010 #
|
12
|
-
# #
|
13
|
-
##################################################################
|
14
|
-
|
15
|
-
require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
|
16
|
-
|
17
|
-
describe Amp::Core::Support::StringUtils do
|
18
|
-
describe '#ord' do
|
19
|
-
it 'raises an ArgumentError on an empty string' do
|
20
|
-
lambda { Amp::Core::Support::StringUtils.ord('') }.should raise_error(ArgumentError)
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'returns the first byte of the string' do
|
24
|
-
Amp::Core::Support::StringUtils.ord('A').should == 65
|
25
|
-
Amp::Core::Support::StringUtils.ord('™').should == 226
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
describe '#unhexlify' do
|
30
|
-
it 'converts a few hex bytes to binary' do
|
31
|
-
Amp::Core::Support::StringUtils.unhexlify('abcd').should == "\xab\xcd"
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
describe '#hexlify' do
|
36
|
-
it 'converts text data to its hex form' do
|
37
|
-
Amp::Core::Support::StringUtils.hexlify('ABCD').should == '41424344'
|
38
|
-
end
|
39
|
-
|
40
|
-
it 'converts binary data to its hex form' do
|
41
|
-
Amp::Core::Support::StringUtils.hexlify('ABCD').should == '41424344'
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|