github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/cli/context_test.go (about)

     1  package cli
     2  
     3  import (
     4  	"flag"
     5  	"testing"
     6  	"time"
     7  )
     8  
     9  func TestNewContext(t *testing.T) {
    10  	set := flag.NewFlagSet("test", 0)
    11  	set.Int("myflag", 12, "doc")
    12  	globalSet := flag.NewFlagSet("test", 0)
    13  	globalSet.Int("myflag", 42, "doc")
    14  	globalCtx := NewContext(nil, globalSet, nil)
    15  	command := Command{Name: "mycommand"}
    16  	c := NewContext(nil, set, globalCtx)
    17  	c.Command = command
    18  	expect(t, c.Int("myflag"), 12)
    19  	expect(t, c.GlobalInt("myflag"), 42)
    20  	expect(t, c.Command.Name, "mycommand")
    21  }
    22  
    23  func TestContext_Int(t *testing.T) {
    24  	set := flag.NewFlagSet("test", 0)
    25  	set.Int("myflag", 12, "doc")
    26  	c := NewContext(nil, set, nil)
    27  	expect(t, c.Int("myflag"), 12)
    28  }
    29  
    30  func TestContext_Duration(t *testing.T) {
    31  	set := flag.NewFlagSet("test", 0)
    32  	set.Duration("myflag", time.Duration(12*time.Second), "doc")
    33  	c := NewContext(nil, set, nil)
    34  	expect(t, c.Duration("myflag"), time.Duration(12*time.Second))
    35  }
    36  
    37  func TestContext_String(t *testing.T) {
    38  	set := flag.NewFlagSet("test", 0)
    39  	set.String("myflag", "hello world", "doc")
    40  	c := NewContext(nil, set, nil)
    41  	expect(t, c.String("myflag"), "hello world")
    42  }
    43  
    44  func TestContext_Bool(t *testing.T) {
    45  	set := flag.NewFlagSet("test", 0)
    46  	set.Bool("myflag", false, "doc")
    47  	c := NewContext(nil, set, nil)
    48  	expect(t, c.Bool("myflag"), false)
    49  }
    50  
    51  func TestContext_BoolT(t *testing.T) {
    52  	set := flag.NewFlagSet("test", 0)
    53  	set.Bool("myflag", true, "doc")
    54  	c := NewContext(nil, set, nil)
    55  	expect(t, c.BoolT("myflag"), true)
    56  }
    57  
    58  func TestContext_Args(t *testing.T) {
    59  	set := flag.NewFlagSet("test", 0)
    60  	set.Bool("myflag", false, "doc")
    61  	c := NewContext(nil, set, nil)
    62  	set.Parse([]string{"--myflag", "bat", "baz"})
    63  	expect(t, len(c.Args()), 2)
    64  	expect(t, c.Bool("myflag"), true)
    65  }
    66  
    67  func TestContext_NArg(t *testing.T) {
    68  	set := flag.NewFlagSet("test", 0)
    69  	set.Bool("myflag", false, "doc")
    70  	c := NewContext(nil, set, nil)
    71  	set.Parse([]string{"--myflag", "bat", "baz"})
    72  	expect(t, c.NArg(), 2)
    73  }
    74  
    75  func TestContext_IsSet(t *testing.T) {
    76  	set := flag.NewFlagSet("test", 0)
    77  	set.Bool("myflag", false, "doc")
    78  	set.String("otherflag", "hello world", "doc")
    79  	globalSet := flag.NewFlagSet("test", 0)
    80  	globalSet.Bool("myflagGlobal", true, "doc")
    81  	globalCtx := NewContext(nil, globalSet, nil)
    82  	c := NewContext(nil, set, globalCtx)
    83  	set.Parse([]string{"--myflag", "bat", "baz"})
    84  	globalSet.Parse([]string{"--myflagGlobal", "bat", "baz"})
    85  	expect(t, c.IsSet("myflag"), true)
    86  	expect(t, c.IsSet("otherflag"), false)
    87  	expect(t, c.IsSet("bogusflag"), false)
    88  	expect(t, c.IsSet("myflagGlobal"), false)
    89  }
    90  
    91  func TestContext_GlobalIsSet(t *testing.T) {
    92  	set := flag.NewFlagSet("test", 0)
    93  	set.Bool("myflag", false, "doc")
    94  	set.String("otherflag", "hello world", "doc")
    95  	globalSet := flag.NewFlagSet("test", 0)
    96  	globalSet.Bool("myflagGlobal", true, "doc")
    97  	globalSet.Bool("myflagGlobalUnset", true, "doc")
    98  	globalCtx := NewContext(nil, globalSet, nil)
    99  	c := NewContext(nil, set, globalCtx)
   100  	set.Parse([]string{"--myflag", "bat", "baz"})
   101  	globalSet.Parse([]string{"--myflagGlobal", "bat", "baz"})
   102  	expect(t, c.GlobalIsSet("myflag"), false)
   103  	expect(t, c.GlobalIsSet("otherflag"), false)
   104  	expect(t, c.GlobalIsSet("bogusflag"), false)
   105  	expect(t, c.GlobalIsSet("myflagGlobal"), true)
   106  	expect(t, c.GlobalIsSet("myflagGlobalUnset"), false)
   107  	expect(t, c.GlobalIsSet("bogusGlobal"), false)
   108  }
   109  
   110  func TestContext_NumFlags(t *testing.T) {
   111  	set := flag.NewFlagSet("test", 0)
   112  	set.Bool("myflag", false, "doc")
   113  	set.String("otherflag", "hello world", "doc")
   114  	globalSet := flag.NewFlagSet("test", 0)
   115  	globalSet.Bool("myflagGlobal", true, "doc")
   116  	globalCtx := NewContext(nil, globalSet, nil)
   117  	c := NewContext(nil, set, globalCtx)
   118  	set.Parse([]string{"--myflag", "--otherflag=foo"})
   119  	globalSet.Parse([]string{"--myflagGlobal"})
   120  	expect(t, c.NumFlags(), 2)
   121  }