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) | |
| 		} | |
| 	} | |
| }
 |