Best Testng code snippet using org.testng.AssertJUnit.assertFalse
Source:TernaryTreeDictionaryTest.java
...53 public void search()54 throws Exception55 {56 AssertJUnit.assertTrue(caseSensitive.search("manipular"));57 AssertJUnit.assertFalse(caseSensitive.search(FALSE_SEARCH));58 AssertJUnit.assertTrue(caseInsensitive.search("manipular"));59 AssertJUnit.assertTrue(caseInsensitive.search("manipular".toUpperCase()));60 AssertJUnit.assertFalse(caseInsensitive.search(FALSE_SEARCH));61 }62 /**63 * This test is disabled by default. It produces a lot of testng report data which runs the process OOM.64 *65 * @param word to search for.66 *67 * @throws Exception On test failure.68 */69 @Test(groups = {"ttdicttest"}, dataProvider = "all-web-words", enabled = false)70 public void searchAll(final String word)71 throws Exception72 {73 AssertJUnit.assertTrue(caseSensitive.search(word));74 AssertJUnit.assertTrue(caseInsensitive.search(word));75 AssertJUnit.assertTrue(caseInsensitive.search(word.toLowerCase()));76 AssertJUnit.assertTrue(caseInsensitive.search(word.toUpperCase()));77 }78 /**79 * @param word to search for.80 * @param results case sensitive results81 *82 * @throws Exception On test failure.83 */84 @Parameters({ "partialSearchWord", "partialSearchResults" })85 @Test(groups = {"ttdicttest"})86 public void partialSearch(final String word, final String results)87 throws Exception88 {89 AssertJUnit.assertTrue(Arrays.equals(results.split("\\|"), caseSensitive.partialSearch(word)));90 AssertJUnit.assertFalse(Arrays.equals(results.split("\\|"), caseSensitive.partialSearch(FALSE_SEARCH)));91 try {92 caseInsensitive.partialSearch(word);93 AssertJUnit.fail("Should have thrown UnsupportedOperationException");94 } catch (UnsupportedOperationException e) {95 AssertJUnit.assertEquals(e.getClass(), UnsupportedOperationException.class);96 } catch (Exception e) {97 AssertJUnit.fail("Should have thrown UnsupportedOperationException, threw " + e.getMessage());98 }99 }100 /**101 * @param word to search for.102 * @param distance for near search103 * @param results case sensitive results104 *105 * @throws Exception On test failure.106 */107 @Parameters({ "nearSearchWord", "nearSearchDistance", "nearSearchResults" })108 @Test(groups = {"ttdicttest"})109 public void nearSearch(final String word, final int distance, final String results)110 throws Exception111 {112 AssertJUnit.assertTrue(Arrays.equals(results.split("\\|"), caseSensitive.nearSearch(word, distance)));113 AssertJUnit.assertFalse(Arrays.equals(results.split("\\|"), caseSensitive.nearSearch(FALSE_SEARCH, distance)));114 try {115 caseInsensitive.nearSearch(word, distance);116 AssertJUnit.fail("Should have thrown UnsupportedOperationException");117 } catch (UnsupportedOperationException e) {118 AssertJUnit.assertEquals(e.getClass(), UnsupportedOperationException.class);119 } catch (Exception e) {120 AssertJUnit.fail("Should have thrown UnsupportedOperationException, threw " + e.getMessage());121 }122 }123 /** @throws Exception On test failure. */124 @Test(groups = {"ttdicttest"})125 public void bubbleSort()126 throws Exception127 {128 testSort(new BubbleSort());129 }130 /** @throws Exception On test failure. */131 @Test(groups = {"ttdicttest"})132 public void selectionSort()133 throws Exception134 {135 testSort(new SelectionSort());136 }137 /** @throws Exception On test failure. */138 @Test(groups = {"ttdicttest"})139 public void insertionSort()140 throws Exception141 {142 testSort(new InsertionSort());143 }144 /** @throws Exception On test failure. */145 @Test(groups = {"ttdicttest"})146 public void quickSort()147 throws Exception148 {149 testSort(new QuickSort());150 }151 /**152 * @param sorter to sort with153 *154 * @throws Exception On test failure.155 */156 public void testSort(final ArraySorter sorter)157 throws Exception158 {159 ArrayWordList awl = new ArrayWordList(ANIMALS, true, sorter);160 final TernaryTreeDictionary sortCS = new TernaryTreeDictionary(awl);161 AssertJUnit.assertTrue(sortCS.search(ANIMAL_SEARCH_CS));162 AssertJUnit.assertFalse(sortCS.search(ANIMAL_SEARCH_CI));163 AssertJUnit.assertTrue(164 Arrays.equals(ANIMAL_PARTIAL_SEARCH_RESULTS_CS, sortCS.partialSearch(ANIMAL_PARTIAL_SEARCH)));165 AssertJUnit.assertFalse(166 Arrays.equals(ANIMAL_PARTIAL_SEARCH_RESULTS_CI, sortCS.partialSearch(ANIMAL_PARTIAL_SEARCH)));167 awl = new ArrayWordList(ANIMALS, false, sorter);168 final TernaryTreeDictionary sortCI = new TernaryTreeDictionary(awl);169 AssertJUnit.assertTrue(sortCI.search(ANIMAL_SEARCH_CS));170 AssertJUnit.assertTrue(sortCI.search(ANIMAL_SEARCH_CI));171 }172}...
Source:AccordionTest.java
...44 WebElement tab4H = driver.findElement(By.id("ui-id-7"));45 WebElement tab4C = driver.findElement(By.id("ui-id-8"));46 Assert.assertTrue(tab1C.isDisplayed());47 Log.info("Verified tab 1 content is displayed by default");48 Assert.assertFalse(tab2C.isDisplayed());49 Assert.assertFalse(tab3C.isDisplayed());50 Assert.assertFalse(tab4C.isDisplayed());51 Log.info("Verified tabs 2,3,4 content are not displayed by default");52 tab2H.click();53 Log.info("Select tab 2");54 Thread.sleep(2000);55 Assert.assertTrue(tab2C.isDisplayed());56 Assert.assertFalse(tab1C.isDisplayed()); 57 Assert.assertFalse(tab3C.isDisplayed());58 Assert.assertFalse(tab4C.isDisplayed()); 59 Log.info("Verified tab 2 is displayed and tabs 1,3,4 content are not displayed by default");60 tab3H.click();61 Thread.sleep(2000);62 Assert.assertTrue(tab3C.isDisplayed());63 Assert.assertFalse(tab1C.isDisplayed()); 64 Assert.assertFalse(tab2C.isDisplayed());65 Assert.assertFalse(tab4C.isDisplayed()); 66 Log.info("Verified tab 3 is displayed and tabs 1,2,4 content are not displayed by default");67 }68 69 @Test70 public void accordionTest2() throws InterruptedException {71 72 driver.switchTo().defaultContent();73 driver.findElement(By.cssSelector("a[href$='tab-2']")).click();74 Log.info("Selected 2nd Accordian type");75 driver.switchTo().frame(1);76 77 WebElement tab1H = driver.findElement(By.id("ui-id-1"));78 WebElement tab1C = driver.findElement(By.id("ui-id-2"));79 80 WebElement tab2H = driver.findElement(By.id("ui-id-3"));81 WebElement tab2C = driver.findElement(By.id("ui-id-4"));82 83 WebElement tab3H = driver.findElement(By.id("ui-id-5"));84 WebElement tab3C = driver.findElement(By.id("ui-id-6"));85 86 WebElement tab4H = driver.findElement(By.id("ui-id-7"));87 WebElement tab4C = driver.findElement(By.id("ui-id-8"));88 WebElement toggleBtn = driver.findElement(By.id("toggle"));89 90 AssertJUnit.assertTrue(tab1C.isDisplayed());91 AssertJUnit.assertFalse(tab2C.isDisplayed()); 92 AssertJUnit.assertFalse(tab3C.isDisplayed());93 AssertJUnit.assertFalse(tab4C.isDisplayed());94 Log.info("Verified default open tab");95 System.out.println(tab1H.getAttribute("class"));96 List<WebElement> iconTest = driver.findElements(By.cssSelector("h3 > span"));97 System.out.println(iconTest.size());98 AssertJUnit.assertEquals(iconTest.size(),4);99 toggleBtn.click();100 Log.info("Clciked on toggle button ");101 System.out.println(tab1H.getAttribute("class"));102 Log.info("Accordion classes are "+ tab1H.getAttribute("class"));103 iconTest = driver.findElements(By.cssSelector("h3 > span"));104 System.out.println(iconTest.size());105 Log.info("Icon spans present -"+iconTest.size());106 AssertJUnit.assertEquals(iconTest.size(),0);107 Log.info("Verified accordion icons removed");108 tab2H.click();109 Thread.sleep(2000);110 AssertJUnit.assertTrue(tab2C.isDisplayed());111 AssertJUnit.assertFalse(tab1C.isDisplayed()); 112 AssertJUnit.assertFalse(tab3C.isDisplayed());113 AssertJUnit.assertFalse(tab4C.isDisplayed()); 114 Log.info("Verified accordion behavior on second group");115 tab3H.click();116 Thread.sleep(2000);117 AssertJUnit.assertTrue(tab3C.isDisplayed());118 AssertJUnit.assertFalse(tab1C.isDisplayed()); 119 AssertJUnit.assertFalse(tab2C.isDisplayed());120 AssertJUnit.assertFalse(tab4C.isDisplayed()); 121 Log.info("Verified accordion behavior on third group");122 }123 124}...
Source:IBatisSqlActionRuleTest.java
1package com.alibaba.cobar.client.router.rules;2import static org.testng.AssertJUnit.assertEquals;3import static org.testng.AssertJUnit.assertFalse;4import static org.testng.AssertJUnit.assertTrue;5import static org.testng.AssertJUnit.fail;6import java.util.List;7import org.apache.commons.lang.ArrayUtils;8import org.testng.annotations.AfterMethod;9import org.testng.annotations.BeforeMethod;10import org.testng.annotations.Test;11import com.alibaba.cobar.client.router.rules.ibatis.IBatisSqlActionRule;12import com.alibaba.cobar.client.router.support.IBatisRoutingFact;13import com.alibaba.cobar.client.support.utils.CollectionUtils;14@Test15public class IBatisSqlActionRuleTest {16 public static final String SQL_MAP_ACTION_ID = "com.alibaba.cobar.client.entity.Tweet.delete";17 public static final String[] EXPECTED_SHARDS = { "shard1", "shard2", "shard3" };18 private IBatisSqlActionRule rule;19 @BeforeMethod20 protected void setUp() throws Exception {21 rule = new IBatisSqlActionRule(SQL_MAP_ACTION_ID, "shard1, shard2, shard3");22 }23 24 @AfterMethod25 protected void tearDown() throws Exception {26 rule = null;27 }28 public void testSqlActionRuleOnShardIdsNormally() {29 List<String> shards = rule.action();30 assertTrue(CollectionUtils.isNotEmpty(shards));31 assertEquals(3, shards.size());32 for (String shard : shards) {33 assertTrue(ArrayUtils.contains(EXPECTED_SHARDS, shard));34 }35 }36 public void testSqlActionRuleOnShardIdsAbnormally() {37 try {38 new IBatisSqlActionRule(SQL_MAP_ACTION_ID, "");39 } catch (IllegalArgumentException e) {40 // pass41 }42 try {43 new IBatisSqlActionRule(SQL_MAP_ACTION_ID, null);44 } catch (IllegalArgumentException e) {45 // pass46 }47 }48 public void testSqlActionRuleOnShardIdsWithCustomActionPatternSeparatorNormally() {49 rule.setActionPatternSeparator(";");50 List<String> shards = rule.action();51 assertTrue(CollectionUtils.isNotEmpty(shards));52 assertEquals(1, shards.size());53 assertEquals("shard1, shard2, shard3", shards.get(0));54 rule = new IBatisSqlActionRule(SQL_MAP_ACTION_ID, "shard1; shard2; shard3");55 rule.setActionPatternSeparator(";");56 shards = null;57 shards = rule.action();58 assertTrue(CollectionUtils.isNotEmpty(shards));59 assertEquals(3, shards.size());60 for (String shard : shards) {61 assertTrue(ArrayUtils.contains(EXPECTED_SHARDS, shard));62 }63 }64 public void testSqlActionRuleOnShardIdsWithCustomActionPatternSeparatorAbnormally() {65 try {66 rule.setActionPatternSeparator(null);67 } catch (IllegalArgumentException e) {68 // pass69 }70 }71 public void testSqlActionRuleOnTypePatternNormally() {72 IBatisRoutingFact fact = new IBatisRoutingFact(SQL_MAP_ACTION_ID, null);73 assertTrue(rule.isDefinedAt(fact));74 75 fact = new IBatisRoutingFact("com.alibaba.cobar.client.entity.Tweet.del", null);76 assertFalse(rule.isDefinedAt(fact));77 78 fact = new IBatisRoutingFact("com.alibaba.cobar.client.entity.Tweet", null);79 assertFalse(rule.isDefinedAt(fact));80 81 fact = new IBatisRoutingFact(null, null);82 assertFalse(rule.isDefinedAt(fact));83 }84 85 public void testSqlActionRuleOnTypePatternAbnormally(){86 try{87 rule.isDefinedAt(null);88 fail();89 }90 catch(IllegalArgumentException e)91 {92 // pass93 }94 }95}...
Source:SorterTest.java
...45 public void bubbleSort(final String dict)46 throws Exception47 {48 final String[] array = TestUtil.fileToArray(dict);49 AssertJUnit.assertFalse(Arrays.equals(sortedArray, array));50 doSort(new BubbleSort(), array);51 AssertJUnit.assertTrue(Arrays.equals(sortedArray, array));52 }53 /**54 * @param dict to load.55 *56 * @throws Exception On test failure.57 */58 @Parameters("fbsdFile")59 @Test(groups = {"sorttest"})60 public void collectionsSort(final String dict)61 throws Exception62 {63 final String[] array = TestUtil.fileToArray(dict);64 AssertJUnit.assertFalse(Arrays.equals(sortedArray, array));65 doSort(new ArraysSort(), array);66 AssertJUnit.assertTrue(Arrays.equals(sortedArray, array));67 }68 /**69 * @param dict to load.70 *71 * @throws Exception On test failure.72 */73 @Parameters("fbsdFile")74 @Test(groups = {"sorttest"})75 public void insertionSort(final String dict)76 throws Exception77 {78 final String[] array = TestUtil.fileToArray(dict);79 AssertJUnit.assertFalse(Arrays.equals(sortedArray, array));80 doSort(new InsertionSort(), array);81 AssertJUnit.assertTrue(Arrays.equals(sortedArray, array));82 }83 /**84 * @param dict to load.85 *86 * @throws Exception On test failure.87 */88 @Parameters("fbsdFile")89 @Test(groups = {"sorttest"})90 public void quickSort(final String dict)91 throws Exception92 {93 final String[] array = TestUtil.fileToArray(dict);94 AssertJUnit.assertFalse(Arrays.equals(sortedArray, array));95 doSort(new QuickSort(), array);96 AssertJUnit.assertTrue(Arrays.equals(sortedArray, array));97 }98 /**99 * @param dict to load.100 *101 * @throws Exception On test failure.102 */103 @Parameters("fbsdFile")104 @Test(groups = {"sorttest"})105 public void selectionSort(final String dict)106 throws Exception107 {108 final String[] array = TestUtil.fileToArray(dict);109 AssertJUnit.assertFalse(Arrays.equals(sortedArray, array));110 doSort(new SelectionSort(), array);111 AssertJUnit.assertTrue(Arrays.equals(sortedArray, array));112 }113 /**114 * Sorts the supplied list with the supplied sorter.115 *116 * @param s sorter to sort with117 * @param array to sort118 */119 public void doSort(final ArraySorter s, final String[] array)120 {121 long t = System.nanoTime();122 s.sort(array);123 t = System.nanoTime() - t;...
Source:IBatisNamespaceRuleTest.java
1package com.alibaba.cobar.client.router.rules;2import static org.testng.AssertJUnit.assertEquals;3import static org.testng.AssertJUnit.assertFalse;4import static org.testng.AssertJUnit.assertNotNull;5import static org.testng.AssertJUnit.assertTrue;6import static org.testng.AssertJUnit.fail;7import java.util.List;8import org.testng.annotations.Test;9import com.alibaba.cobar.client.router.rules.ibatis.IBatisNamespaceRule;10import com.alibaba.cobar.client.router.support.IBatisRoutingFact;11import com.alibaba.cobar.client.support.utils.CollectionUtils;12@Test13public class IBatisNamespaceRuleTest{14 public void testNamespaceRuleNormally() {15 IBatisNamespaceRule rule = new IBatisNamespaceRule("com.alibaba.cobar.client.entity.Tweet",16 "p1, p2");17 List<String> shardIds = rule.action();18 assertNotNull(shardIds);19 assertEquals(2, shardIds.size());20 IBatisRoutingFact fact = new IBatisRoutingFact(21 "com.alibaba.cobar.client.entity.Tweet.update", null);22 assertTrue(rule.isDefinedAt(fact));23 fact = new IBatisRoutingFact("com.alibaba.cobar.client.entity.Tweet.delete", null);24 assertTrue(rule.isDefinedAt(fact));25 fact = new IBatisRoutingFact("com.alibaba.cobar.client.entity.Twet.delete", null);26 assertFalse(rule.isDefinedAt(fact));27 }28 public void testNamespaceRuleNormallyWithCustomActionPatternSeparator() {29 IBatisNamespaceRule rule = new IBatisNamespaceRule("com.alibaba.cobar.client.entity.Tweet",30 "p1, p2");31 rule.setActionPatternSeparator(";");32 List<String> shards = rule.action();33 assertTrue(CollectionUtils.isNotEmpty(shards));34 assertEquals(1, shards.size());35 rule = new IBatisNamespaceRule("com.alibaba.cobar.client.entity.Tweet", "p1; p2");36 rule.setActionPatternSeparator(";");37 shards = null;38 shards = rule.action();39 assertTrue(CollectionUtils.isNotEmpty(shards));40 assertEquals(2, shards.size());41 IBatisRoutingFact fact = new IBatisRoutingFact(42 "com.alibaba.cobar.client.entity.Tweet.update", null);43 assertTrue(rule.isDefinedAt(fact));44 fact = new IBatisRoutingFact("com.alibaba.cobar.client.entity.Tweet.delete", null);45 assertTrue(rule.isDefinedAt(fact));46 fact = new IBatisRoutingFact("com.alibaba.cobar.client.entity.Twet.delete", null);47 assertFalse(rule.isDefinedAt(fact));48 }49 public void testNamespaceRuleAbnormally() {50 try {51 new IBatisNamespaceRule("", "");52 fail();53 } catch (IllegalArgumentException e) {54 // pass55 }56 try {57 new IBatisNamespaceRule("", null);58 fail();59 } catch (IllegalArgumentException e) {60 // pass61 }...
Source:ParameterTest.java
...17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.18 */19package org.rhq.enterprise.communications.command.param;20import static org.testng.AssertJUnit.assertEquals;21import static org.testng.AssertJUnit.assertFalse;22import static org.testng.AssertJUnit.assertNotNull;23import static org.testng.AssertJUnit.assertNotSame;24import static org.testng.AssertJUnit.assertNull;25import static org.testng.AssertJUnit.assertTrue;26import org.testng.annotations.Test;27/**28 * Tests Parameter.29 *30 * @author John Mazzitelli31 */32@Test33public class ParameterTest {34 /**35 * Tests constructors.36 *37 * @throws Exception38 */39 public void testParameterConstructors() throws Exception {40 Parameter p1;41 Parameter p2;42 ParameterDefinition def1;43 ParameterDefinition def2;44 p1 = new Parameter(null, null);45 assertNull(p1.getValue());46 assertNull(p1.getDefinition());47 p2 = new Parameter(null, null);48 assertEquals(p1, p2);49 // test copy constructor with all nulls in the parameter to copy50 p2 = new Parameter(p1);51 assertNotSame(p1, p2);52 assertEquals(p1, p2);53 def1 = new ParameterDefinition("one", "java.lang.String", true, true, true, "");54 p1 = new Parameter(def1, null);55 assertFalse(p1.equals(p2));56 assertNotNull(p1.getDefinition());57 def2 = new ParameterDefinition("one", "java.lang.StringBuffer", false, false, false, "desc");58 p2 = new Parameter(def2, null);59 assertEquals(p1.getDefinition(), p2.getDefinition()); // just def names are compared in equals()60 assertTrue(p1.equals(p2)); // the values are compared as well as defs61 def2 = new ParameterDefinition("two", "java.lang.String", true, true, true, "");62 p2 = new Parameter(def2, null);63 assertFalse(p1.getDefinition().equals(p2.getDefinition()));64 assertFalse(p1.equals(p2)); // stupid, we know if the defs are different, the params themselves are not equal65 def1 = new ParameterDefinition("param", "java.lang.String", true, true, true, "");66 def2 = new ParameterDefinition("param", "java.lang.String", true, true, true, "");67 p1 = new Parameter(def1, null);68 p2 = new Parameter(def2, null);69 assertEquals(p1, p2);70 p1 = new Parameter(def1, "hello world!");71 p2 = new Parameter(def2, "hello world!");72 assertEquals(p1, p2);73 p2 = new Parameter(p1);74 assertNotSame(p1, p2);75 assertEquals(p1, p2);76 }77 /**78 * Tests dirty flag.79 */80 public void testIsDirty() {81 Parameter p = new Parameter(null, null);82 assertFalse(p.isDirty());83 p.setValue("boo");84 assertTrue(p.isDirty());85 p.setValue(null);86 assertTrue(p.isDirty()); // even though its back to its original value, its still considered dirty87 }88}...
Source:ContactmethodsTest.java
...30 AssertJUnit.assertTrue(contactmethods1.hashCode() == contactmethods2.hashCode());31 32 contactmethods1.setId(1);33 contactmethods2.setId(2);34 AssertJUnit.assertFalse(contactmethods1.equals(contactmethods2));35 AssertJUnit.assertFalse(contactmethods1.hashCode() == contactmethods2.hashCode());36 37 contactmethods1.setId(2);38 contactmethods2.setId(2);39 AssertJUnit.assertTrue(contactmethods1.equals(contactmethods2));40 AssertJUnit.assertTrue(contactmethods1.hashCode() == contactmethods2.hashCode());41 }42}...
Source:test1.java
...23 24 @Test(groups = {"tests", "negative"})25 public void negativeTest() {26 boolean result = demoClass.isInteger(12.232);27 AssertJUnit.assertFalse(result);28 }29 30 @Test(groups = {"tests", "negative"})31 public void negativeTest2() {32 boolean result = demoClass.isInteger(-0.1);33 AssertJUnit.assertFalse(result);34 }35 36}...
assertFalse
Using AI Code Generation
1package jenkins;2import org.testng.AssertJUnit;3import org.testng.annotations.Test;4import org.testng.annotations.BeforeMethod;5import org.testng.annotations.AfterMethod;6public class TestNGTest {7 public void f() {8 AssertJUnit.assertFalse(true);9 AssertJUnit.assertEquals("a", "b");10 AssertJUnit.assertTrue(false);11 AssertJUnit.assertNotSame(new Object(), new Object());12 AssertJUnit.assertSame(new Object(), new Object());13 AssertJUnit.fail("failing for the sake of it");14 }15 public void beforeMethod() {16 }17 public void afterMethod() {18 }19}20package jenkins;21import java.util.concurrent.TimeUnit;22import org.junit.*;23import static org.junit.Assert.*;24import org.openqa.selenium.*;25import org.openqa.selenium.firefox.FirefoxDriver;26import org.openqa.selenium.support.ui.Select;27public class TestNGTest {28 private WebDriver driver;29 private String baseUrl;30 private boolean acceptNextAlert = true;31 private StringBuffer verificationErrors = new StringBuffer();32 public void setUp() throws Exception {33 driver = new FirefoxDriver();34 driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);35 }36 public void testF() throws Exception {37 driver.get(baseUrl + "/jenkins/");
TestNG is a Java-based open-source framework for test automation that includes various test types, such as unit testing, functional testing, E2E testing, etc. TestNG is in many ways similar to JUnit and NUnit. But in contrast to its competitors, its extensive features make it a lot more reliable framework. One of the major reasons for its popularity is its ability to structure tests and improve the scripts' readability and maintainability. Another reason can be the important characteristics like the convenience of using multiple annotations, reliance, and priority that make this framework popular among developers and testers for test design. You can refer to the TestNG tutorial to learn why you should choose the TestNG framework.
You can push your abilities to do automated testing using TestNG and advance your career by earning a TestNG certification. Check out our TestNG certification.
Watch this complete tutorial to learn how you can leverage the capabilities of the TestNG framework for Selenium automation testing.
Get 100 minutes of automation test minutes FREE!!