github.com/thanhphan1147/cloudfoundry-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  })