github.com/DaAlbrecht/cf-cli@v0.0.0-20231128151943-1fe19bb400b9/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 T", func() { 51 It("interprets the number as terabytes", func() { 52 err := megabytes.UnmarshalFlag("2T") 53 Expect(err).ToNot(HaveOccurred()) 54 Expect(megabytes.Value).To(BeEquivalentTo(2097152)) 55 }) 56 }) 57 58 When("the suffix is TB", func() { 59 It("interprets the number as terabytes", func() { 60 err := megabytes.UnmarshalFlag("3TB") 61 Expect(err).ToNot(HaveOccurred()) 62 Expect(megabytes.Value).To(BeEquivalentTo(3145728)) 63 }) 64 }) 65 66 When("the suffix is lowercase", func() { 67 It("is case insensitive", func() { 68 err := megabytes.UnmarshalFlag("7m") 69 Expect(err).ToNot(HaveOccurred()) 70 Expect(megabytes.Value).To(BeEquivalentTo(7)) 71 }) 72 }) 73 74 When("the megabytes are invalid", func() { 75 It("returns an error", func() { 76 err := megabytes.UnmarshalFlag("invalid") 77 Expect(err).To(MatchError(&flags.Error{ 78 Type: flags.ErrRequired, 79 Message: `Byte quantity must be an integer with a unit of measurement like M, MB, G, or GB`, 80 })) 81 }) 82 }) 83 84 When("a decimal is used", func() { 85 It("returns an error", func() { 86 err := megabytes.UnmarshalFlag("1.2M") 87 Expect(err).To(MatchError(&flags.Error{ 88 Type: flags.ErrRequired, 89 Message: `Byte quantity must be an integer with a unit of measurement like M, MB, G, or GB`, 90 })) 91 }) 92 }) 93 94 When("the units are missing", func() { 95 It("returns an error", func() { 96 err := megabytes.UnmarshalFlag("37") 97 Expect(err).To(MatchError(&flags.Error{ 98 Type: flags.ErrRequired, 99 Message: `Byte quantity must be an integer with a unit of measurement like M, MB, G, or GB`, 100 })) 101 }) 102 }) 103 104 When("the suffix is B", func() { 105 It("returns an error", func() { 106 err := megabytes.UnmarshalFlag("10B") 107 Expect(err).To(MatchError(&flags.Error{ 108 Type: flags.ErrRequired, 109 Message: `Byte quantity must be an integer with a unit of measurement like M, MB, G, or GB`, 110 })) 111 }) 112 }) 113 114 When("value is empty", func() { 115 It("sets IsSet to false", func() { 116 err := megabytes.UnmarshalFlag("") 117 Expect(err).NotTo(HaveOccurred()) 118 Expect(megabytes.IsSet).To(BeFalse()) 119 }) 120 }) 121 }) 122 })