github.com/sleungcy-sap/cli@v7.1.0+incompatible/command/flag/memory_with_unlimited_test.go (about) 1 package flag_test 2 3 import ( 4 . "code.cloudfoundry.org/cli/command/flag" 5 flags "github.com/jessevdk/go-flags" 6 . "github.com/onsi/ginkgo" 7 . "github.com/onsi/gomega" 8 ) 9 10 var _ = Describe("MemoryWithUnlimited", func() { 11 var memoryWithUnlimited MemoryWithUnlimited 12 13 Describe("UnmarshalFlag", func() { 14 BeforeEach(func() { 15 memoryWithUnlimited = MemoryWithUnlimited{} 16 }) 17 18 When("the suffix is M", func() { 19 It("interprets the number as memoryWithUnlimited", func() { 20 err := memoryWithUnlimited.UnmarshalFlag("17M") 21 Expect(err).ToNot(HaveOccurred()) 22 Expect(memoryWithUnlimited.Value).To(BeEquivalentTo(17)) 23 }) 24 }) 25 26 When("the suffix is MB", func() { 27 It("interprets the number as memoryWithUnlimited", func() { 28 err := memoryWithUnlimited.UnmarshalFlag("19MB") 29 Expect(err).ToNot(HaveOccurred()) 30 Expect(memoryWithUnlimited.Value).To(BeEquivalentTo(19)) 31 }) 32 }) 33 34 When("the suffix is G", func() { 35 It("interprets the number as gigabytes", func() { 36 err := memoryWithUnlimited.UnmarshalFlag("2G") 37 Expect(err).ToNot(HaveOccurred()) 38 Expect(memoryWithUnlimited.Value).To(BeEquivalentTo(2048)) 39 }) 40 }) 41 42 When("the suffix is GB", func() { 43 It("interprets the number as gigabytes", func() { 44 err := memoryWithUnlimited.UnmarshalFlag("3GB") 45 Expect(err).ToNot(HaveOccurred()) 46 Expect(memoryWithUnlimited.Value).To(BeEquivalentTo(3072)) 47 }) 48 }) 49 50 When("the value is -1 (unlimited)", func() { 51 It("interprets the number as memoryWithUnlimited", func() { 52 err := memoryWithUnlimited.UnmarshalFlag("-1") 53 Expect(err).ToNot(HaveOccurred()) 54 Expect(memoryWithUnlimited.Value).To(BeEquivalentTo(-1)) 55 }) 56 }) 57 58 When("the suffix is lowercase", func() { 59 It("is case insensitive", func() { 60 err := memoryWithUnlimited.UnmarshalFlag("7m") 61 Expect(err).ToNot(HaveOccurred()) 62 Expect(memoryWithUnlimited.Value).To(BeEquivalentTo(7)) 63 }) 64 }) 65 66 When("the memoryWithUnlimited are invalid", func() { 67 It("returns an error", func() { 68 err := memoryWithUnlimited.UnmarshalFlag("invalid") 69 Expect(err).To(MatchError(&flags.Error{ 70 Type: flags.ErrRequired, 71 Message: `Byte quantity must be an integer with a unit of measurement like M, MB, G, or GB`, 72 })) 73 }) 74 }) 75 76 When("a decimal is used", func() { 77 It("returns an error", func() { 78 err := memoryWithUnlimited.UnmarshalFlag("1.2M") 79 Expect(err).To(MatchError(&flags.Error{ 80 Type: flags.ErrRequired, 81 Message: `Byte quantity must be an integer with a unit of measurement like M, MB, G, or GB`, 82 })) 83 }) 84 }) 85 86 When("the units are missing", func() { 87 It("returns an error", func() { 88 err := memoryWithUnlimited.UnmarshalFlag("37") 89 Expect(err).To(MatchError(&flags.Error{ 90 Type: flags.ErrRequired, 91 Message: `Byte quantity must be an integer with a unit of measurement like M, MB, G, or GB`, 92 })) 93 }) 94 }) 95 96 When("the suffix is B", func() { 97 It("returns an error", func() { 98 err := memoryWithUnlimited.UnmarshalFlag("10B") 99 Expect(err).To(MatchError(&flags.Error{ 100 Type: flags.ErrRequired, 101 Message: `Byte quantity must be an integer with a unit of measurement like M, MB, G, or GB`, 102 })) 103 }) 104 }) 105 106 When("value is empty", func() { 107 It("sets IsSet to false", func() { 108 err := memoryWithUnlimited.UnmarshalFlag("") 109 Expect(err).NotTo(HaveOccurred()) 110 Expect(memoryWithUnlimited.IsSet).To(BeFalse()) 111 }) 112 }) 113 }) 114 })