git.iko.soy/parseable-android
on icon help sign in
80 lines 1.9 kB history raw
1package com.parseable.android
3import com.parseable.android.data.formatBytes
4import org.junit.Assert.*
5import org.junit.Test
7class FormatBytesTest {
9 @Test
10 fun `null input returns null`() {
11 assertNull(formatBytes(null))
12 }
14 @Test
15 fun `zero bytes`() {
16 assertEquals("0 B", formatBytes("0"))
17 }
19 @Test
20 fun `small byte values`() {
21 assertEquals("512 B", formatBytes("512"))
22 assertEquals("1 B", formatBytes("1"))
23 }
25 @Test
26 fun `kilobytes`() {
27 assertEquals("1.00 KB", formatBytes("1024"))
28 assertEquals("1.50 KB", formatBytes("1536"))
29 }
31 @Test
32 fun `megabytes`() {
33 assertEquals("1.00 MB", formatBytes("1048576"))
34 assertEquals("5.25 MB", formatBytes("5505024"))
35 }
37 @Test
38 fun `gigabytes`() {
39 assertEquals("1.00 GB", formatBytes("1073741824"))
40 assertEquals("2.50 GB", formatBytes("2684354560"))
41 }
43 @Test
44 fun `terabytes`() {
45 assertEquals("1.00 TB", formatBytes("1099511627776"))
46 }
48 @Test
49 fun `large values use no decimals`() {
50 // 150 GB = 161061273600
51 assertEquals("150 GB", formatBytes("161061273600"))
52 }
54 @Test
55 fun `mid-range values use one decimal`() {
56 // 15.5 MB = 16252928
57 assertEquals("15.5 MB", formatBytes("16252928"))
58 }
60 @Test
61 fun `non-numeric string passes through unchanged`() {
62 assertEquals("already formatted", formatBytes("already formatted"))
63 assertEquals("1.5 GiB", formatBytes("1.5 GiB"))
64 }
66 @Test
67 fun `negative value passes through unchanged`() {
68 assertEquals("-1024", formatBytes("-1024"))
69 }
71 @Test
72 fun `whitespace is trimmed before parsing`() {
73 assertEquals("1.00 KB", formatBytes(" 1024 "))
74 }
76 @Test
77 fun `fractional bytes from API`() {
78 assertEquals("1.50 KB", formatBytes("1536.0"))
79 }