summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorSteve Kemp <steve@steve.org.uk>2012-11-23 20:53:05 +0000
committerSteve Kemp <steve@steve.org.uk>2012-11-23 20:53:05 +0000
commit912bf63dcc21b6313d92839a7bcf4fc5ca6b3333 (patch)
tree077a497f50bb0a6b92d7753bfe26cd83257d8bf9 /t
parent46ef84aed94360083e4f6bf7a38c1408f13d091a (diff)
Updated test-cases to cover different parsing routes.
Diffstat (limited to 't')
-rwxr-xr-xt/test-custodian-parser.rb84
1 files changed, 78 insertions, 6 deletions
diff --git a/t/test-custodian-parser.rb b/t/test-custodian-parser.rb
index 8fe794e..4387d13 100755
--- a/t/test-custodian-parser.rb
+++ b/t/test-custodian-parser.rb
@@ -12,12 +12,18 @@ require 'custodian/parser'
#
class TestCustodianParser < Test::Unit::TestCase
+
+
+
#
# Create the test suite environment: NOP.
#
def setup
end
+
+
+
#
# Destroy the test suite environment: NOP.
#
@@ -27,8 +33,6 @@ class TestCustodianParser < Test::Unit::TestCase
-
-
#
# Test we can create a new parser object - specifically
# that it throws exceptions if it is not given a filename
@@ -47,6 +51,72 @@ class TestCustodianParser < Test::Unit::TestCase
#
+ # Test the different kinds of parsing:
+ #
+ # 1. By string - single line.
+ # 2. By array - with multiple lines.
+ # 3. By lines - with newlines.
+ #
+ def test_parsing_api
+
+ #
+ # 1. By string.
+ #
+ parser = Custodian::Parser.new()
+
+ # 1.a. Comment lines return nil.
+ result = parser.parse_line( "# this is a comment" )
+ assert( result.nil? )
+
+ # 1.b. Adding a test will return an array of test-objects.
+ result = parser.parse_line( "smtp.bytemark.co.uk must run smtp on 25 otherwise 'failure'." );
+ assert( !result.nil? )
+ assert( result.kind_of? Array )
+ assert( result.size == 1 )
+
+
+ #
+ # 2. By array.
+ #
+ parser = Custodian::Parser.new()
+ # 2.a. Comment lines return nil.
+ tmp = Array.new()
+ tmp.push( "# This is a comment.." )
+ assert( parser.parse_lines( tmp ).nil? )
+
+ # 2.b. Adding a test will return an array of test-objects.
+ tmp = Array.new()
+ tmp.push( "smtp.bytemark.co.uk must run ssh on 22 otherwise 'oops'." );
+ ret = parser.parse_lines( tmp )
+ assert( ret.kind_of? Array );
+ assert( ret.size == 1 )
+
+ #
+ # 3. By lines
+ #
+ parser = Custodian::Parser.new()
+ # 3.a. Comment lines return nil.
+ str =<<EOF
+# This is a comment
+# This is also a fine comment
+EOF
+ assert( parser.parse_lines( str ).nil? )
+
+ # 3.b. Adding a test will return an array of test-objects.
+ str = <<EOF
+smtp.bytemark.co.uk must run smtp on 25.
+google.com must run ping otherwise 'internet broken?'.
+EOF
+ ret = parser.parse_lines( str )
+ assert( ret.kind_of? Array );
+ assert( ret.size == 1 )
+
+ end
+
+
+
+
+ #
# Test that we can define macros.
#
def test_macros_lines
@@ -77,6 +147,7 @@ EOF
+
#
# Test that we can define macros.
#
@@ -107,6 +178,7 @@ EOF
+
#
# Duplicate macros are a bug
#
@@ -115,11 +187,11 @@ EOF
parser = Custodian::Parser.new()
#
- # Input text
+ # Input text to parse.
#
text = Array.new()
- text.push( "FOO is kvm1.vm.bytemark.co.uk." );
- text.push( "FOO is kvm2.vm.bytemark.co.uk." );
+ text.push( "FOO is kvm1.vm.bytemark.co.uk." );
+ text.push( "FOO is kvm2.vm.bytemark.co.uk." );
#
# Test the parser with this text
@@ -130,7 +202,7 @@ EOF
#
- # We should now have one macros.
+ # We should now have one macro.
#
macros = parser.macros
assert( ! macros.empty? )