clibuildertest.groovy

来自「Groovy动态语言 运行在JVM中的动态语言 可以方便的处理业务逻辑变化大的业」· GROOVY 代码 · 共 71 行

GROOVY
71
字号
class CliBuilderTest extends GroovyTestCase {

    void testSample() {
        def writer = new StringWriter()
        def cli = new CliBuilder(usage:'groovy [option]* filename', writer: new PrintWriter(writer))
        cli.h(longOpt: 'help', 'usage information')
        cli.c(argName: 'charset', args:1, longOpt: 'encoding', 'character encoding')
        cli.i(argName: 'extension', optionalArg: true,
             "modify files in place, create backup if extension is given (e.g. \'.bak\')")

        def stringified = cli.options.toString()
        assert stringified =~ /i=. option: i  :: modify files in place, create backup if extension is given/
        assert stringified =~ /c=. option: c encoding  :: character encoding/
        assert stringified =~ /h=. option: h help  :: usage information/
        assert stringified =~ /encoding=. option: c encoding  :: character encoding/
        assert stringified =~ /help=. option: h help  :: usage information/

        def options = cli.parse(['-h','-c','ASCII'])

        assert options.hasOption('h')
        assert options.h
        if (options.h) cli.usage()
        assert writer.toString().tokenize("\r\n").join("\n") ==
'''usage: groovy [option]* filename
 -c,--encoding <charset>   character encoding
 -h,--help                 usage information
 -i                        modify files in place, create backup if
                           extension is given (e.g. '.bak')'''

        assert options.hasOption('c')
        assert options.c
        assertEquals 'ASCII', options.getOptionValue('c')
        assertEquals 'ASCII', options.c
        assertEquals false, options.encoding

        assertEquals false, options.noSuchOptionGiven
        assertEquals false, options.x
    }

    void testMultipleArgs() {
        def cli = new CliBuilder()
        cli.a(longOpt:'arg', args:2, valueSeparator:',' as char, 'arguments')
        def options = cli.parse(['-a','1,2'])
        assertEquals '1', options.a
        assertEquals(['1','2'], options.as)
        assertEquals false, options.arg
        assertEquals(false, options.args)
    }

    void testArgs() {
        def cli = new CliBuilder()
        cli.a([:],'')
        def options = cli.parse(['-a','1','2'])
        assertEquals(['1','2'], options.arguments())
    }

    void testFailedParsePrintsUsage() {
        def writer = new StringWriter()
        def cli = new CliBuilder(writer: new PrintWriter(writer))
        cli.x(required:true, 'message')

        def options = cli.parse([])

        assert writer.toString().tokenize("\r\n").join("\n") ==
'''error: -x
usage: groovy
 -x   message'''

    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?