1d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar/*
2d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar * Copyright (C) 2015 The Android Open Source Project
3d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar *
4d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar * Licensed under the Apache License, Version 2.0 (the "License");
5d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar * you may not use this file except in compliance with the License.
6d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar * You may obtain a copy of the License at
7d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar *
8d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar *      http://www.apache.org/licenses/LICENSE-2.0
9d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar *
10d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar * Unless required by applicable law or agreed to in writing, software
11d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar * distributed under the License is distributed on an "AS IS" BASIS,
12d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar * See the License for the specific language governing permissions and
14d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar * limitations under the License.
15d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar */
16d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar
17fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountpackage android.databinding.tool.writer;
18d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar
19d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyarimport org.junit.Test;
20d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar
21d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyarimport java.util.BitSet;
22fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mount
23fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountimport static org.junit.Assert.assertEquals;
24d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar
25d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyarpublic class FlagSetTest {
26d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar    @Test
27d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar    public void testSimple1Level() {
28d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        BitSet bs = new BitSet();
29d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        bs.set(7);
30d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        FlagSet flagSet = new FlagSet(bs, 3);
31d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        assertEquals(3, flagSet.buckets.length);
32d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        assertEquals(1 << 7, flagSet.buckets[0]);
33d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        assertEquals(0, flagSet.buckets[1]);
34d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        assertEquals(0, flagSet.buckets[2]);
35d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar    }
36d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar
37d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar    @Test
38d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar    public void testSimple2Level() {
39d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        BitSet bs = new BitSet();
40d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        bs.set(FlagSet.sBucketSize + 2);
41d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        FlagSet flagSet = new FlagSet(bs, 3);
42d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        assertEquals(3, flagSet.buckets.length);
43d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        assertEquals(0, flagSet.buckets[0]);
44d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        assertEquals(1 << 2, flagSet.buckets[1]);
45d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        assertEquals(0, flagSet.buckets[2]);
46d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar    }
47d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar
48d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar    @Test
49d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar    public void testSimple3Level() {
50d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        BitSet bs = new BitSet();
51d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        bs.set(5);
52d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        bs.set(FlagSet.sBucketSize + 2);
53d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        bs.set(FlagSet.sBucketSize * 2 + 10);
54d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        FlagSet flagSet = new FlagSet(bs, 3);
55d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        assertEquals(3, flagSet.buckets.length);
56d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        assertEquals(1 << 5, flagSet.buckets[0]);
57d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        assertEquals(1 << 2, flagSet.buckets[1]);
58d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar        assertEquals(1 << 10, flagSet.buckets[2]);
59d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar    }
601f1f50563ad8166e3cd2be64b705ae583834540dYigit Boyar
611f1f50563ad8166e3cd2be64b705ae583834540dYigit Boyar    @Test
621f1f50563ad8166e3cd2be64b705ae583834540dYigit Boyar    public void testLargeValue() {
631f1f50563ad8166e3cd2be64b705ae583834540dYigit Boyar        BitSet bs = new BitSet();
641f1f50563ad8166e3cd2be64b705ae583834540dYigit Boyar        bs.set(43);
651f1f50563ad8166e3cd2be64b705ae583834540dYigit Boyar        FlagSet flagSet = new FlagSet(bs, 1);
661f1f50563ad8166e3cd2be64b705ae583834540dYigit Boyar        assertEquals(1, flagSet.buckets.length);
671f1f50563ad8166e3cd2be64b705ae583834540dYigit Boyar        assertEquals(1L << 43, flagSet.buckets[0]);
681f1f50563ad8166e3cd2be64b705ae583834540dYigit Boyar    }
69d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar}
70