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