1 package org.robolectric.shadows; 2 3 import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR2; 4 import static org.assertj.core.api.Assertions.assertThat; 5 6 import android.os.StatFs; 7 import java.io.File; 8 import org.junit.Test; 9 import org.junit.runner.RunWith; 10 import org.robolectric.RobolectricTestRunner; 11 import org.robolectric.annotation.Config; 12 13 @RunWith(RobolectricTestRunner.class) 14 public class ShadowStatFsTest { 15 @Test 16 public void shouldRegisterStats() throws Exception { 17 ShadowStatFs.registerStats("/tmp", 100, 20, 10); 18 StatFs statsFs = new StatFs("/tmp"); 19 20 assertThat(statsFs.getBlockCount()).isEqualTo(100); 21 assertThat(statsFs.getFreeBlocks()).isEqualTo(20); 22 assertThat(statsFs.getAvailableBlocks()).isEqualTo(10); 23 assertThat(statsFs.getBlockSize()).isEqualTo(ShadowStatFs.BLOCK_SIZE); 24 } 25 26 @Test 27 public void shouldRegisterStatsWithFile() throws Exception { 28 ShadowStatFs.registerStats(new File("/tmp"), 100, 20, 10); 29 StatFs statsFs = new StatFs(new File("/tmp").getAbsolutePath()); 30 31 assertThat(statsFs.getBlockCount()).isEqualTo(100); 32 assertThat(statsFs.getFreeBlocks()).isEqualTo(20); 33 assertThat(statsFs.getAvailableBlocks()).isEqualTo(10); 34 assertThat(statsFs.getBlockSize()).isEqualTo(ShadowStatFs.BLOCK_SIZE); 35 } 36 37 @Test 38 public void shouldResetStateBetweenTests() throws Exception { 39 StatFs statsFs = new StatFs("/tmp"); 40 assertThat(statsFs.getBlockCount()).isEqualTo(0); 41 assertThat(statsFs.getFreeBlocks()).isEqualTo(0); 42 assertThat(statsFs.getAvailableBlocks()).isEqualTo(0); 43 assertThat(statsFs.getBlockSize()).isEqualTo(ShadowStatFs.BLOCK_SIZE); 44 } 45 46 @Test 47 @Config(minSdk = JELLY_BEAN_MR2) 48 public void withApi18_shouldRegisterStats() { 49 ShadowStatFs.registerStats("/tmp", 100, 20, 10); 50 StatFs statsFs = new StatFs("/tmp"); 51 52 assertThat(statsFs.getBlockCountLong()).isEqualTo(100L); 53 assertThat(statsFs.getFreeBlocksLong()).isEqualTo(20L); 54 assertThat(statsFs.getFreeBytes()).isEqualTo(20L * ShadowStatFs.BLOCK_SIZE); 55 assertThat(statsFs.getAvailableBlocksLong()).isEqualTo(10L); 56 assertThat(statsFs.getAvailableBytes()).isEqualTo(10L * ShadowStatFs.BLOCK_SIZE); 57 assertThat(statsFs.getBlockSizeLong()).isEqualTo(ShadowStatFs.BLOCK_SIZE); 58 } 59 60 @Test 61 @Config(minSdk = JELLY_BEAN_MR2) 62 public void withApi18_shouldRegisterStatsWithFile() { 63 ShadowStatFs.registerStats(new File("/tmp"), 100, 20, 10); 64 StatFs statsFs = new StatFs(new File("/tmp").getAbsolutePath()); 65 66 assertThat(statsFs.getBlockCountLong()).isEqualTo(100L); 67 assertThat(statsFs.getFreeBlocksLong()).isEqualTo(20L); 68 assertThat(statsFs.getFreeBytes()).isEqualTo(20L * ShadowStatFs.BLOCK_SIZE); 69 assertThat(statsFs.getAvailableBlocksLong()).isEqualTo(10L); 70 assertThat(statsFs.getAvailableBytes()).isEqualTo(10L * ShadowStatFs.BLOCK_SIZE); 71 assertThat(statsFs.getBlockSizeLong()).isEqualTo(ShadowStatFs.BLOCK_SIZE); 72 } 73 74 @Test 75 @Config(minSdk = JELLY_BEAN_MR2) 76 public void withApi18_shouldResetStateBetweenTests() { 77 StatFs statsFs = new StatFs("/tmp"); 78 assertThat(statsFs.getBlockCountLong()).isEqualTo(0L); 79 assertThat(statsFs.getFreeBlocksLong()).isEqualTo(0L); 80 assertThat(statsFs.getFreeBytes()).isEqualTo(0L); 81 assertThat(statsFs.getAvailableBlocksLong()).isEqualTo(0L); 82 assertThat(statsFs.getAvailableBytes()).isEqualTo(0L); 83 assertThat(statsFs.getBlockSizeLong()).isEqualTo(ShadowStatFs.BLOCK_SIZE); 84 } 85 86 @Test 87 public void shouldRestat() throws Exception { 88 ShadowStatFs.registerStats("/tmp", 100, 20, 10); 89 StatFs statsFs = new StatFs("/tmp"); 90 91 assertThat(statsFs.getBlockCount()).isEqualTo(100); 92 assertThat(statsFs.getFreeBlocks()).isEqualTo(20); 93 assertThat(statsFs.getAvailableBlocks()).isEqualTo(10); 94 95 ShadowStatFs.registerStats("/tmp", 3, 2, 1); 96 97 statsFs.restat("/tmp"); 98 assertThat(statsFs.getBlockCount()).isEqualTo(3); 99 assertThat(statsFs.getFreeBlocks()).isEqualTo(2); 100 assertThat(statsFs.getAvailableBlocks()).isEqualTo(1); 101 } 102 103 @Test 104 @Config(minSdk = JELLY_BEAN_MR2) 105 public void withApi18_shouldRestat() throws Exception { 106 ShadowStatFs.registerStats("/tmp", 100, 20, 10); 107 StatFs statsFs = new StatFs("/tmp"); 108 109 assertThat(statsFs.getBlockCountLong()).isEqualTo(100L); 110 assertThat(statsFs.getFreeBlocksLong()).isEqualTo(20L); 111 assertThat(statsFs.getFreeBytes()).isEqualTo(20L * ShadowStatFs.BLOCK_SIZE); 112 assertThat(statsFs.getAvailableBlocksLong()).isEqualTo(10L); 113 assertThat(statsFs.getAvailableBytes()).isEqualTo(10L * ShadowStatFs.BLOCK_SIZE); 114 115 ShadowStatFs.registerStats("/tmp", 3, 2, 1); 116 117 statsFs.restat("/tmp"); 118 assertThat(statsFs.getBlockCountLong()).isEqualTo(3L); 119 assertThat(statsFs.getFreeBlocksLong()).isEqualTo(2L); 120 assertThat(statsFs.getFreeBytes()).isEqualTo(2L * ShadowStatFs.BLOCK_SIZE); 121 assertThat(statsFs.getAvailableBlocksLong()).isEqualTo(1L); 122 assertThat(statsFs.getAvailableBytes()).isEqualTo(1L * ShadowStatFs.BLOCK_SIZE); 123 } 124 } 125