| package android.databinding.testapp; |
| |
| import android.databinding.OnRebindCallback; |
| import android.databinding.ViewDataBinding; |
| import android.databinding.testapp.databinding.InvalidateAllLayoutBinding; |
| import android.databinding.testapp.vo.NotBindableVo; |
| |
| import java.util.concurrent.Semaphore; |
| import java.util.concurrent.TimeUnit; |
| |
| public class InvalidateAllTest extends BaseDataBinderTest<InvalidateAllLayoutBinding> { |
| |
| public InvalidateAllTest() { |
| super(InvalidateAllLayoutBinding.class); |
| } |
| |
| public void testRefreshViaInvalidateAll() throws InterruptedException { |
| final Semaphore semaphore = new Semaphore(1); |
| semaphore.acquire(); |
| final NotBindableVo vo = new NotBindableVo("foo"); |
| initBinder(new Runnable() { |
| @Override |
| public void run() { |
| mBinder.setVo(vo); |
| mBinder.addOnRebindCallback(new OnRebindCallback() { |
| @Override |
| public void onBound(ViewDataBinding binding) { |
| super.onBound(binding); |
| semaphore.release(); |
| } |
| }); |
| } |
| }); |
| assertTrue(semaphore.tryAcquire(2, TimeUnit.SECONDS)); |
| |
| assertEquals("foo", mBinder.textView.getText().toString()); |
| vo.setStringValue("bar"); |
| mBinder.invalidateAll(); |
| |
| assertTrue(semaphore.tryAcquire(2, TimeUnit.SECONDS)); |
| assertEquals("bar", mBinder.textView.getText().toString()); |
| |
| } |
| } |