Files
2025-09-29 00:52:08 +02:00

93 lines
2.9 KiB
Ruby
Executable File

#
# getopt_test.rb
# Getopt unit tests
#
# Author:: David Muir <david.muir@rockstarnorth.com>
# Date:: 10 March 2008
#
#-----------------------------------------------------------------------------
# Uses
#-----------------------------------------------------------------------------
require 'pipeline/os/getopt'
require 'test/unit'
#-----------------------------------------------------------------------------
# Code
#-----------------------------------------------------------------------------
module Pipeline
module Test
#
# == Description
#
# Command line argument processor test cases. These tests screw with ARGV,
# although it attempts to restore in the teardown function.
#
class GetoptTests < ::Test::Unit::TestCase
def setup
# Backup ARGV before we screw with it...
@argv_copy = Array.new
@argv_copy.replace( ARGV )
end
def teardown
# Restore ARGV after screwing with it...
ARGV.replace( @argv_copy )
end
def test_getopts
ARGV.clear()
ARGV << "--version" << "-h" << "test_file.txt"
assert_equal( ARGV.size, 3, "ARGV set failed." )
opts, targs = OS::Getopt.getopts(
[ [ '--version', '-v', ::Getopt::BOOLEAN ],
[ '--help', '-h', ::Getopt::BOOLEAN ],
[ '--recurse', '-r', ::Getopt::BOOLEAN ],
[ '--dimensions', '-d', ::Getopt::BOOLEAN ],
[ '--compression', '-c', ::Getopt::BOOLEAN ],
[ '--filter', '-f', ::Getopt::REQUIRED ] ] )
assert_equal( opts['h'], true, "Short option failed." )
assert_equal( opts['help'], true, "Short option failed." )
assert_equal( opts['v'], true, "Long option failed." )
assert_equal( opts['version'], true, "Long option failed." )
assert_equal( opts['verbose'], nil, "Unspecified option failed." )
assert_equal( targs.size, 1, "Trailing arguments size failed." )
assert_equal( targs[0], "test_file.txt", "Trailing arguments value failed." )
end
def test_usage
ARGV.clear()
ARGV << "--version" << "-h" << "test_file.txt"
assert_equal( ARGV.size, 3, "ARGV set failed." )
message = OS::Getopt.usage(
[ [ '--version', '-v', ::Getopt::BOOLEAN, 'Display version information.' ],
[ '--help', '-h', ::Getopt::BOOLEAN, 'Display usage information with a really really long description string yeah woohooo!' ],
[ '--recurse', '-r', ::Getopt::BOOLEAN, 'Recurse into sub-directories.' ],
[ '--dimensions', '-d', ::Getopt::BOOLEAN, 'Display image dimensions.' ],
[ '--compression', '-c', ::Getopt::BOOLEAN, 'Display image compression algorithm.' ],
[ '--filter', '-f', ::Getopt::REQUIRED, 'File filter (e.g. *.dds).' ] ],
{
'files' => 'List of files or paths to search for files (based on filter option).'
} )
puts "\n#{message}"
assert( message.size > 0, 'Usage message is empty' )
end
end
end # Test module
end # Pipeline module
# End of getopt_test.rb