12f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyarpackage android.databinding.testapp;
22f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar
32f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyarimport android.databinding.OnRebindCallback;
42f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyarimport android.databinding.ViewDataBinding;
52f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyarimport android.databinding.testapp.databinding.InvalidateAllLayoutBinding;
62f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyarimport android.databinding.testapp.vo.NotBindableVo;
72f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar
82f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyarimport java.util.concurrent.Semaphore;
92f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyarimport java.util.concurrent.TimeUnit;
102f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar
112f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyarpublic class InvalidateAllTest extends BaseDataBinderTest<InvalidateAllLayoutBinding> {
122f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar
132f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar    public InvalidateAllTest() {
142f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar        super(InvalidateAllLayoutBinding.class);
152f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar    }
162f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar
172f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar    public void testRefreshViaInvalidateAll() throws InterruptedException {
182f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar        final Semaphore semaphore = new Semaphore(1);
192f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar        semaphore.acquire();
2024bec1cc542de69e0e21cc774469f20d34811ad9Yigit Boyar        final NotBindableVo vo = new NotBindableVo("foo");
212f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar        initBinder(new Runnable() {
222f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar            @Override
232f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar            public void run() {
2424bec1cc542de69e0e21cc774469f20d34811ad9Yigit Boyar                mBinder.setVo(vo);
252f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar                mBinder.addOnRebindCallback(new OnRebindCallback() {
262f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar                    @Override
272f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar                    public void onBound(ViewDataBinding binding) {
282f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar                        super.onBound(binding);
292f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar                        semaphore.release();
302f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar                    }
312f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar                });
322f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar            }
332f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar        });
342f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar        assertTrue(semaphore.tryAcquire(2, TimeUnit.SECONDS));
352f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar
362f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar        assertEquals("foo", mBinder.textView.getText().toString());
372f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar        vo.setStringValue("bar");
382f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar        mBinder.invalidateAll();
392f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar
402f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar        assertTrue(semaphore.tryAcquire(2, TimeUnit.SECONDS));
412f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar        assertEquals("bar", mBinder.textView.getText().toString());
422f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar
432f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar    }
442f64c44e4fa296cf658ca986c095eab62f82a31dYigit Boyar}
45