Skip to content

Commit 90abbcf

Browse files
committed
Fix #5
1 parent 54631fa commit 90abbcf

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

fauxflake-core/src/main/java/com/github/rholder/fauxflake/provider/twitter/SnowflakeEncodingProvider.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public class SnowflakeEncodingProvider implements EncodingProvider {
6565
private long shiftedMachineId;
6666

6767
public SnowflakeEncodingProvider(long machineId) {
68-
this.shiftedMachineId = ((machineId % MACHINE_CODES) << SHIFT_MACHINE_CODE_BITS);
68+
this.shiftedMachineId = ((Math.abs(machineId) % MACHINE_CODES) << SHIFT_MACHINE_CODE_BITS);
6969
}
7070

7171
@Override

fauxflake-core/src/test/java/com/github/rholder/fauxflake/provider/twitter/SnowflakeDecodingUtilsTest.java

+20-3
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,37 @@
2020
import com.github.rholder.fauxflake.api.Id;
2121
import com.github.rholder.fauxflake.api.IdGenerator;
2222
import com.github.rholder.fauxflake.provider.SystemTimeProvider;
23+
2324
import org.junit.Assert;
2425
import org.junit.Before;
2526
import org.junit.Test;
27+
import org.junit.runner.RunWith;
28+
import org.junit.runners.Parameterized;
29+
import org.junit.runners.Parameterized.Parameters;
2630

31+
import java.util.Arrays;
32+
import java.util.Collection;
2733
import java.util.Date;
2834

35+
@RunWith(Parameterized.class)
2936
public class SnowflakeDecodingUtilsTest extends SnowflakeDecodingUtils {
3037

31-
private static final int TEST_MACHINE_ID = 53;
38+
private final int machineId;
3239
private IdGenerator idGenerator;
40+
41+
@Parameters
42+
public static Collection<?> data() {
43+
Object[][] data = new Object[][] { {53}, {-53} };
44+
return Arrays.asList(data);
45+
}
46+
47+
public SnowflakeDecodingUtilsTest(int machineId) {
48+
this.machineId = machineId;
49+
}
3350

3451
@Before
3552
public void before() {
36-
idGenerator = new DefaultIdGenerator(new SystemTimeProvider(), new SnowflakeEncodingProvider(TEST_MACHINE_ID));
53+
idGenerator = new DefaultIdGenerator(new SystemTimeProvider(), new SnowflakeEncodingProvider(machineId));
3754
}
3855

3956
@Test
@@ -55,7 +72,7 @@ public void encodedValueCheck() throws InterruptedException {
5572
Date idDate = decodeDate(longId);
5673

5774
Assert.assertTrue("Now is greater than generated id", now.getTime() <= idDate.getTime());
58-
Assert.assertEquals("Unexpected machine id", TEST_MACHINE_ID, decodeMachineId(longId));
75+
Assert.assertEquals("Unexpected machine id", Math.abs(machineId), decodeMachineId(longId));
5976
Assert.assertEquals("Unexpected number of bytes in id", 8, byteId.length);
6077
}
6178

0 commit comments

Comments
 (0)