You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							59 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							59 lines
						
					
					
						
							1.2 KiB
						
					
					
				
								package util
							 | 
						|
								
							 | 
						|
								import "testing"
							 | 
						|
								
							 | 
						|
								func TestByteParsing(t *testing.T) {
							 | 
						|
									tests := []struct {
							 | 
						|
										in  string
							 | 
						|
										exp uint64
							 | 
						|
									}{
							 | 
						|
										{"42", 42},
							 | 
						|
										{"42MB", 42000000},
							 | 
						|
										{"42MiB", 44040192},
							 | 
						|
										{"42mb", 42000000},
							 | 
						|
										{"42mib", 44040192},
							 | 
						|
										{"42MIB", 44040192},
							 | 
						|
										{"42 MB", 42000000},
							 | 
						|
										{"42 MiB", 44040192},
							 | 
						|
										{"42 mb", 42000000},
							 | 
						|
										{"42 mib", 44040192},
							 | 
						|
										{"42 MIB", 44040192},
							 | 
						|
										{"42.5MB", 42500000},
							 | 
						|
										{"42.5MiB", 44564480},
							 | 
						|
										{"42.5 MB", 42500000},
							 | 
						|
										{"42.5 MiB", 44564480},
							 | 
						|
										// No need to say B
							 | 
						|
										{"42M", 42000000},
							 | 
						|
										{"42Mi", 44040192},
							 | 
						|
										{"42m", 42000000},
							 | 
						|
										{"42mi", 44040192},
							 | 
						|
										{"42MI", 44040192},
							 | 
						|
										{"42 M", 42000000},
							 | 
						|
										{"42 Mi", 44040192},
							 | 
						|
										{"42 m", 42000000},
							 | 
						|
										{"42 mi", 44040192},
							 | 
						|
										{"42 MI", 44040192},
							 | 
						|
										{"42.5M", 42500000},
							 | 
						|
										{"42.5Mi", 44564480},
							 | 
						|
										{"42.5 M", 42500000},
							 | 
						|
										{"42.5 Mi", 44564480},
							 | 
						|
										// Bug #42
							 | 
						|
										{"1,005.03 MB", 1005030000},
							 | 
						|
										// Large testing, breaks when too much larger than
							 | 
						|
										// this.
							 | 
						|
										{"12.5 EB", uint64(12.5 * float64(EByte))},
							 | 
						|
										{"12.5 E", uint64(12.5 * float64(EByte))},
							 | 
						|
										{"12.5 EiB", uint64(12.5 * float64(EiByte))},
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									for _, p := range tests {
							 | 
						|
										got, err := ParseBytes(p.in)
							 | 
						|
										if err != nil {
							 | 
						|
											t.Errorf("Couldn't parse %v: %v", p.in, err)
							 | 
						|
										}
							 | 
						|
										if got != p.exp {
							 | 
						|
											t.Errorf("Expected %v for %v, got %v",
							 | 
						|
												p.exp, p.in, got)
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								}
							 |