// Path: src/robolectric2-test/test/com/nikhaldimann/viewselector/robolectric2/testutil/Robolectric2ViewFactory.java
// public class Robolectric2ViewFactory extends ProvidedContextViewFactory {
// 
//     public Robolectric2ViewFactory() {
//         super(Robolectric.application);
//     }
// 
// }
// 
// Path: src/test-lib/src/com/nikhaldimann/viewselector/test/abstrakt/AbstractViewSelectionAssertTest.java
// public abstract class AbstractViewSelectionAssertTest extends ViewSelectorAndroidTestCase {
// 
//     /**
//      * Fails with a RuntimeException, so we can distinguish this from planned
//      * assertion failures.
//      */
//     private void failHard() {
//         throw new RuntimeException("Failed to cause an assertion failure");
//     }
// 
//     @Test
//     public void testAttribute() {
//         TextView view = viewFactory.createTextView();
//         view.setText("foo");
//         view.setTag("bar");
//         assertThatSelection("TextView", view).attribute("text").containsOnly("foo");
//         assertThatSelection("TextView", view).attribute("tag").containsOnly("bar");
//     }
// 
//     @Test
//     public void testAttributeMultiple() {
//         TextView view = viewFactory.createTextView();
//         view.setText("foo");
//         TextView view2 = viewFactory.createTextView();
//         view2.setText("bar");
//         LinearLayout root = viewFactory.createLinearLayout();
//         root.addView(view);
//         root.addView(view2);
//         assertThatSelection("TextView", root)
//             .hasSize(2)
//             .attribute("text").containsExactly("foo", "bar");
//     }
// 
//     @Test
//     public void testFailingAttributeOnEmptySelection() {
//         try {
//             assertThatSelection("ImageView", viewFactory.createTextView()).attribute("tag");
//             failHard();
//         } catch (AssertionError ex) {
//             // expected
//         }
//     }
// 
//     @Test
//     public void testHasAttributeEqualTo() {
//         TextView view = viewFactory.createTextView();
//         view.setText("foo");
//         view.setTag("bar");
//         assertThatSelection("TextView", view).hasAttributeEqualTo("text", "foo");
//         assertThatSelection("TextView", view).hasAttributeEqualTo("tag", "bar");
//     }
// 
//     @Test
//     public void testFailingHasAttributeEqualTo() {
//         try {
//             assertThatSelection("TextView", viewFactory.createTextView())
//                 .hasAttributeEqualTo("text", "foo");
//             failHard();
//         } catch (AssertionError ex) {
//             // expected
//         }
//     }
// 
//     @Test
//     public void testFailingHasAttributeEqualToOnEmptySelection() {
//         TextView view = viewFactory.createTextView();
//         view.setTag("foo");
//         try {
//             assertThatSelection("ImageView", view).hasAttributeEqualTo("tag", "foo");
//             failHard();
//         } catch (AssertionError ex) {
//             // expected
//         }
//     }
// 
//     @Test
//     public void testNonExistentHasAttributeEqualTo() {
//         try {
//             assertThatSelection("TextView", viewFactory.createTextView())
//                 .hasAttributeEqualTo("foo", "bar");
//             failHard();
//         } catch (AttributeAccessException ex) {
//             // expected
//         }
//     }
// 
//     @Test
//     public void testHasTag() {
//         TextView view = viewFactory.createTextView();
//         view.setTag("foo");
//         assertThatSelection("TextView", view).hasTag("foo");
//     }
// 
//     @Test
//     public void testHasTagFailureOnMismatch() {
//         TextView view = viewFactory.createTextView();
//         view.setTag("foo");
//         try {
//             assertThatSelection("TextView", view).hasTag("bar");
//             failHard();
//         } catch (AssertionError ex) {
//             // expected
//         }
//     }
// 
//     @Test
//     public void testHasTagFailureOnNoTag() {
//         TextView view = viewFactory.createTextView();
//         try {
//             assertThatSelection("TextView", view).hasTag("bar");
//             failHard();
//         } catch (AssertionError ex) {
//             // expected
//         }
//     }
// 
//     @Test
//     public void testHasTagFailureOnEmptySelection() {
//         TextView view = viewFactory.createTextView();
//         try {
//             assertThatSelection("ImageView", view).hasTag("bar");
//             failHard();
//         } catch (AssertionError ex) {
//             // expected
//         }
//     }
// 
//     @Test
//     public void testHasTagFailureOnPartialSelectionMatch() {
//         TextView view = viewFactory.createTextView();
//         view.setTag("foo");
//         TextView view2 = viewFactory.createTextView();
//         view.setTag("bar");
//         LinearLayout root = viewFactory.createLinearLayout();
//         root.addView(view);
//         root.addView(view2);
//         try {
//             assertThatSelection("TextView", view).hasTag("foo");
//             failHard();
//         } catch (AssertionError ex) {
//             // expected
//         }
//     }
// 
// }
// 
// Path: src/test-lib/src/com/nikhaldimann/viewselector/test/util/ViewFactory.java
// public interface ViewFactory {
// 
//     TextView createTextView();
// 
//     LinearLayout createLinearLayout();
// 
//     FrameLayout createFrameLayout();
// 
// }


import org.junit.runner.RunWith;
import com.nikhaldimann.viewselector.robolectric2.testutil.Robolectric2ViewFactory;
import com.nikhaldimann.viewselector.test.abstrakt.AbstractViewSelectionAssertTest;
import com.nikhaldimann.viewselector.test.util.ViewFactory;
import org.robolectric.RobolectricTestRunner;
package com.nikhaldimann.viewselector.robolectric2;



@RunWith(RobolectricTestRunner.class)
public class ViewSelectionAssertTest extends AbstractViewSelectionAssertTest {

// Path: src/robolectric2-test/test/com/nikhaldimann/viewselector/robolectric2/testutil/Robolectric2ViewFactory.java
// public class Robolectric2ViewFactory extends ProvidedContextViewFactory {
// 
//     public Robolectric2ViewFactory() {
//         super(Robolectric.application);
//     }
// 
// }
// 
// Path: src/test-lib/src/com/nikhaldimann/viewselector/test/abstrakt/AbstractViewSelectionAssertTest.java
// public abstract class AbstractViewSelectionAssertTest extends ViewSelectorAndroidTestCase {
// 
//     /**
//      * Fails with a RuntimeException, so we can distinguish this from planned
//      * assertion failures.
//      */
//     private void failHard() {
//         throw new RuntimeException("Failed to cause an assertion failure");
//     }
// 
//     @Test
//     public void testAttribute() {
//         TextView view = viewFactory.createTextView();
//         view.setText("foo");
//         view.setTag("bar");
//         assertThatSelection("TextView", view).attribute("text").containsOnly("foo");
//         assertThatSelection("TextView", view).attribute("tag").containsOnly("bar");
//     }
// 
//     @Test
//     public void testAttributeMultiple() {
//         TextView view = viewFactory.createTextView();
//         view.setText("foo");
//         TextView view2 = viewFactory.createTextView();
//         view2.setText("bar");
//         LinearLayout root = viewFactory.createLinearLayout();
//         root.addView(view);
//         root.addView(view2);
//         assertThatSelection("TextView", root)
//             .hasSize(2)
//             .attribute("text").containsExactly("foo", "bar");
//     }
// 
//     @Test
//     public void testFailingAttributeOnEmptySelection() {
//         try {
//             assertThatSelection("ImageView", viewFactory.createTextView()).attribute("tag");
//             failHard();
//         } catch (AssertionError ex) {
//             // expected
//         }
//     }
// 
//     @Test
//     public void testHasAttributeEqualTo() {
//         TextView view = viewFactory.createTextView();
//         view.setText("foo");
//         view.setTag("bar");
//         assertThatSelection("TextView", view).hasAttributeEqualTo("text", "foo");
//         assertThatSelection("TextView", view).hasAttributeEqualTo("tag", "bar");
//     }
// 
//     @Test
//     public void testFailingHasAttributeEqualTo() {
//         try {
//             assertThatSelection("TextView", viewFactory.createTextView())
//                 .hasAttributeEqualTo("text", "foo");
//             failHard();
//         } catch (AssertionError ex) {
//             // expected
//         }
//     }
// 
//     @Test
//     public void testFailingHasAttributeEqualToOnEmptySelection() {
//         TextView view = viewFactory.createTextView();
//         view.setTag("foo");
//         try {
//             assertThatSelection("ImageView", view).hasAttributeEqualTo("tag", "foo");
//             failHard();
//         } catch (AssertionError ex) {
//             // expected
//         }
//     }
// 
//     @Test
//     public void testNonExistentHasAttributeEqualTo() {
//         try {
//             assertThatSelection("TextView", viewFactory.createTextView())
//                 .hasAttributeEqualTo("foo", "bar");
//             failHard();
//         } catch (AttributeAccessException ex) {
//             // expected
//         }
//     }
// 
//     @Test
//     public void testHasTag() {
//         TextView view = viewFactory.createTextView();
//         view.setTag("foo");
//         assertThatSelection("TextView", view).hasTag("foo");
//     }
// 
//     @Test
//     public void testHasTagFailureOnMismatch() {
//         TextView view = viewFactory.createTextView();
//         view.setTag("foo");
//         try {
//             assertThatSelection("TextView", view).hasTag("bar");
//             failHard();
//         } catch (AssertionError ex) {
//             // expected
//         }
//     }
// 
//     @Test
//     public void testHasTagFailureOnNoTag() {
//         TextView view = viewFactory.createTextView();
//         try {
//             assertThatSelection("TextView", view).hasTag("bar");
//             failHard();
//         } catch (AssertionError ex) {
//             // expected
//         }
//     }
// 
//     @Test
//     public void testHasTagFailureOnEmptySelection() {
//         TextView view = viewFactory.createTextView();
//         try {
//             assertThatSelection("ImageView", view).hasTag("bar");
//             failHard();
//         } catch (AssertionError ex) {
//             // expected
//         }
//     }
// 
//     @Test
//     public void testHasTagFailureOnPartialSelectionMatch() {
//         TextView view = viewFactory.createTextView();
//         view.setTag("foo");
//         TextView view2 = viewFactory.createTextView();
//         view.setTag("bar");
//         LinearLayout root = viewFactory.createLinearLayout();
//         root.addView(view);
//         root.addView(view2);
//         try {
//             assertThatSelection("TextView", view).hasTag("foo");
//             failHard();
//         } catch (AssertionError ex) {
//             // expected
//         }
//     }
// 
// }
// 
// Path: src/test-lib/src/com/nikhaldimann/viewselector/test/util/ViewFactory.java
// public interface ViewFactory {
// 
//     TextView createTextView();
// 
//     LinearLayout createLinearLayout();
// 
//     FrameLayout createFrameLayout();
// 
// }


// Path: src/robolectric2-test/test/com/nikhaldimann/viewselector/robolectric2/ViewSelectionAssertTest.java
import org.junit.runner.RunWith;
import com.nikhaldimann.viewselector.robolectric2.testutil.Robolectric2ViewFactory;
import com.nikhaldimann.viewselector.test.abstrakt.AbstractViewSelectionAssertTest;
import com.nikhaldimann.viewselector.test.util.ViewFactory;
import org.robolectric.RobolectricTestRunner;

package com.nikhaldimann.viewselector.robolectric2;



@RunWith(RobolectricTestRunner.class)
public class ViewSelectionAssertTest extends AbstractViewSelectionAssertTest {

    protected ViewFactory createViewFactory() {