OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "base/utf_string_conversions.h" | |
6 #include "testing/gtest/include/gtest/gtest.h" | |
7 #include "ui/base/text/bytes_formatting.h" | |
8 | |
9 namespace ui { | |
10 | |
11 TEST(BytesFormattingTest, GetByteDisplayUnits) { | |
12 static const struct { | |
13 int64 bytes; | |
14 DataUnits expected; | |
15 } cases[] = { | |
16 {0, DATA_UNITS_BYTE}, | |
17 {512, DATA_UNITS_BYTE}, | |
18 {10*1024, DATA_UNITS_KIBIBYTE}, | |
19 {10*1024*1024, DATA_UNITS_MEBIBYTE}, | |
20 {10LL*1024*1024*1024, DATA_UNITS_GIBIBYTE}, | |
21 {10LL*1024*1024*1024*1024, DATA_UNITS_TEBIBYTE}, | |
22 {~(1LL<<63), DATA_UNITS_PEBIBYTE}, | |
23 #ifdef NDEBUG | |
24 {-1, DATA_UNITS_BYTE}, | |
25 #endif | |
26 }; | |
27 | |
28 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) | |
29 EXPECT_EQ(cases[i].expected, GetByteDisplayUnits(cases[i].bytes)); | |
30 } | |
31 | |
32 TEST(BytesFormattingTest, FormatBytes) { | |
33 static const struct { | |
34 int64 bytes; | |
35 DataUnits units; | |
36 const char* expected; | |
37 const char* expected_with_units; | |
38 } cases[] = { | |
39 // Expected behavior: we show one post-decimal digit when we have | |
40 // under two pre-decimal digits, except in cases where it makes no | |
41 // sense (zero or bytes). | |
42 // Since we switch units once we cross the 1000 mark, this keeps | |
43 // the display of file sizes or bytes consistently around three | |
44 // digits. | |
45 {0, DATA_UNITS_BYTE, "0", "0 bytes"}, | |
46 {512, DATA_UNITS_BYTE, "512", "512 bytes"}, | |
47 {512, DATA_UNITS_KIBIBYTE, "0.5", "0.5 kB"}, | |
48 {1024*1024, DATA_UNITS_KIBIBYTE, "1,024", "1,024 kB"}, | |
49 {1024*1024, DATA_UNITS_MEBIBYTE, "1.0", "1.0 MB"}, | |
50 {1024*1024*1024, DATA_UNITS_GIBIBYTE, "1.0", "1.0 GB"}, | |
51 {10LL*1024*1024*1024, DATA_UNITS_GIBIBYTE, "10.0", "10.0 GB"}, | |
52 {99LL*1024*1024*1024, DATA_UNITS_GIBIBYTE, "99.0", "99.0 GB"}, | |
53 {105LL*1024*1024*1024, DATA_UNITS_GIBIBYTE, "105", "105 GB"}, | |
54 {105LL*1024*1024*1024 + 500LL*1024*1024, DATA_UNITS_GIBIBYTE, | |
55 "105", "105 GB"}, | |
56 {~(1LL<<63), DATA_UNITS_GIBIBYTE, "8,589,934,592", "8,589,934,592 GB"}, | |
57 {~(1LL<<63), DATA_UNITS_NATURAL, "8,192", "8,192 PB"}, | |
58 | |
59 {99*1024 + 103, DATA_UNITS_KIBIBYTE, "99.1", "99.1 kB"}, | |
60 {1024*1024 + 103, DATA_UNITS_KIBIBYTE, "1,024", "1,024 kB"}, | |
61 {1024*1024 + 205 * 1024, DATA_UNITS_MEBIBYTE, "1.2", "1.2 MB"}, | |
62 {1024*1024*1024 + (927 * 1024*1024), DATA_UNITS_GIBIBYTE, | |
63 "1.9", "1.9 GB"}, | |
64 {10LL*1024*1024*1024, DATA_UNITS_GIBIBYTE, "10.0", "10.0 GB"}, | |
65 {100LL*1024*1024*1024, DATA_UNITS_GIBIBYTE, "100", "100 GB"}, | |
66 #ifdef NDEBUG | |
67 {-1, DATA_UNITS_BYTE, "", ""}, | |
68 #endif | |
69 }; | |
70 | |
71 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { | |
72 EXPECT_EQ(ASCIIToUTF16(cases[i].expected), | |
73 FormatBytes(cases[i].bytes, cases[i].units, false)); | |
74 EXPECT_EQ(ASCIIToUTF16(cases[i].expected_with_units), | |
75 FormatBytes(cases[i].bytes, cases[i].units, true)); | |
76 } | |
77 } | |
jungshik at Google
2011/06/22 00:35:01
Can you do something similar to what's done in bas
Avi (use Gerrit)
2011/06/22 16:48:25
I'm afraid that doing that will break as soon as t
| |
78 | |
79 } // namespace ui | |
OLD | NEW |