How to use theInstance method of org.hamcrest.CoreMatchers class

Best junit code snippet using org.hamcrest.CoreMatchers.theInstance

Source:HamcrestCoreMatchersTest.java Github

copy

Full Screen

...22import static org.hamcrest.CoreMatchers.nullValue;23import static org.hamcrest.CoreMatchers.sameInstance;24import static org.hamcrest.CoreMatchers.startsWith;25import static org.hamcrest.CoreMatchers.startsWithIgnoringCase;26import static org.hamcrest.CoreMatchers.theInstance;27import static org.hamcrest.MatcherAssert.assertThat;28import java.util.List;29import org.junit.jupiter.api.Test;30import com.google.common.collect.Lists;3132public class HamcrestCoreMatchersTest {3334 @Test35 public void givenTestInput_WhenUsingIsForMatch() {3637 // GIVEN38 String testString = "hamcrest core";3940 // ASSERT41 assertThat(testString, is("hamcrest core"));42 assertThat(testString, is(equalTo("hamcrest core")));43 }4445 @Test46 public void givenDifferentStaticTypeTestInput_WhenUsingEqualToObject_ThenCorrect() {4748 // GIVEN49 Object original = 100;5051 // ASSERT52 assertThat(original, equalToObject(100));53 }5455 @Test56 public void givenTestInput_WhenUsingInstanceOfForClassTypeCheck() {5758 assertThat("hamcrest", is(instanceOf(String.class)));59 }6061 @Test62 public void givenTestInput_WhenUsingIsA_ThenAssertType() {6364 assertThat("hamcrest core", isA(String.class));65 }6667 @Test68 public void givenTestInput_WhenUsingEqualToMatcherForEquality() {6970 // GIVEN71 String actualString = "Hamcrest Core";72 List<String> actualList = Lists.newArrayList("hamcrest", "core");7374 // ASSERT75 assertThat(actualString, is(equalTo("Hamcrest Core")));76 assertThat(actualList, is(equalTo(Lists.newArrayList("hamcrest", "core"))));77 }7879 @Test80 public void givenTestInput_WhenUsingNotForMatch() {8182 // GIVEN83 String testString = "hamcrest";8485 // ASSERT86 assertThat(testString, not("hamcrest core"));87 assertThat(testString, is(not(equalTo("hamcrest core"))));88 assertThat(testString, is(not(instanceOf(Integer.class))));89 }9091 @Test92 public void givenTestInput_WhenUsingNullValueForNullCheck() {9394 // GIVEN95 Integer nullObject = null;9697 // ASSERT98 assertThat(nullObject, is(nullValue()));99 assertThat(nullObject, is(nullValue(Integer.class)));100 }101102 @Test103 public void givenTestInput_WhenUsingNotNullValueForNotNullCheck() {104105 // GIVEN106 Integer testNumber = 123;107108 // ASSERT109 assertThat(testNumber, is(notNullValue()));110 assertThat(testNumber, is(notNullValue(Integer.class)));111 }112113 @Test114 public void givenString_WhenStartsWith_ThenCorrect() {115116 // GIVEN117 String testString = "hamcrest core";118119 // ASSERT120 assertThat(testString, startsWith("hamcrest"));121 }122123 @Test124 public void giveString_WhenStartsWithIgnoringCase_ThenCorrect() {125126 // GIVEN127 String testString = "hamcrest core";128129 // ASSERT130 assertThat(testString, startsWithIgnoringCase("HAMCREST"));131 }132133 @Test134 public void givenString_WhenEndsWith_ThenCorrect() {135136 // GIVEN137 String testString = "hamcrest core";138139 // ASSERT140 assertThat(testString, endsWith("core"));141 }142143 @Test144 public void givenString_WhenEndsWithIgnoringCase_ThenCorrect() {145146 // GIVEN147 String testString = "hamcrest core";148149 // ASSERT150 assertThat(testString, endsWithIgnoringCase("CORE"));151 }152153 @Test154 public void givenString_WhenContainsString_ThenCorrect() {155156 // GIVEN157 String testString = "hamcrest core";158159 // ASSERT160 assertThat(testString, containsString("co"));161 }162163 @Test164 public void givenString_WhenContainsStringIgnoringCase_ThenCorrect() {165166167 // GIVEN168 String testString = "hamcrest core";169170 // ASSERT171 assertThat(testString, containsStringIgnoringCase("CO"));172 }173174 @Test175 public void givenTestInput_WhenUsingHasItemInCollection() {176177 // GIVEN178 List<String> list = Lists.newArrayList("java", "spring", "baeldung");179180 // ASSERT181 assertThat(list, hasItem("java"));182 assertThat(list, hasItem(isA(String.class)));183 }184185186 @Test187 public void givenTestInput_WhenUsingHasItemsInCollection() {188189 // GIVEN190 List<String> list = Lists.newArrayList("java", "spring", "baeldung");191192 // ASSERT193 assertThat(list, hasItems("java", "baeldung"));194 assertThat(list, hasItems(isA(String.class), endsWith("ing")));195 }196197 @Test198 public void givenTestInput_WhenUsingAnyForClassType() {199200 assertThat("hamcrest", is(any(String.class)));201 assertThat("hamcrest", is(any(Object.class)));202 }203204 @Test205 public void givenTestInput_WhenUsingAllOfForAllMatchers() {206207 // GIVEN208 String testString = "Hamcrest Core";209210 // ASSERT211 assertThat(testString, allOf(startsWith("Ham"), endsWith("ore"), containsString("Core")));212 }213214 @Test215 public void givenTestInput_WhenUsingAnyOfForAnyMatcher() {216217 // GIVEN218 String testString = "Hamcrest Core";219220 // ASSERT221 assertThat(testString, anyOf(startsWith("Ham"), containsString("baeldung")));222 }223224 @Test225 public void givenTestInput_WhenUsingBothForMatcher() {226227 // GIVEN228 String testString = "Hamcrest Core Matchers";229230 // ASSERT231 assertThat(testString, both(startsWith("Ham")).and(containsString("Core")));232 }233234 @Test235 public void givenTestInput_WhenUsingEitherForMatcher() {236237 // GIVEN238 String testString = "Hamcrest Core Matchers";239240 // ASSERT241 assertThat(testString, either(startsWith("Bael")).or(containsString("Core")));242 }243244245 @Test246 public void givenTestInput_WhenUsingEveryItemForMatchInCollection() {247248 // GIVEN249 List<String> testItems = Lists.newArrayList("Common", "Core", "Combinable");250251 // ASSERT252 assertThat(testItems, everyItem(startsWith("Co")));253 }254255 @Test256 public void givenTwoTestInputs_WhenUsingSameInstanceForMatch() {257258 // GIVEN259 String string1 = "hamcrest";260 String string2 = string1;261262 // ASSERT263 assertThat(string1, is(sameInstance(string2)));264 }265266 @Test267 public void givenTwoTestInputs_WhenUsingTheInstanceForMatch() {268 // GIVEN269 String string1 = "hamcrest";270 String string2 = string1;271272 // ASSERT273 assertThat(string1, is(theInstance(string2)));274 }275276}277 ...

Full Screen

Full Screen

Source:ThreadPoolSupplierTest.java Github

copy

Full Screen

...122 } finally {123 log.removeHandler(handler);124 }125 }126 private void testInstance(ThreadPoolExecutor theInstance,127 String namePrefix,128 int corePoolSize,129 int queueCapacity,130 int poolSize,131 boolean shouldBeDaemon) throws ExecutionException, InterruptedException {132 // test that we did indeed create an executor service133 assertThat(theInstance, notNullValue());134 // test that pool size is configured correctly135 assertThat(theInstance.getCorePoolSize(), is(corePoolSize));136 // test that queue-capacity is configured correctly137 assertThat(theInstance.getQueue().remainingCapacity(), is(queueCapacity));138 // test that prestart is configured correctly139 assertThat(theInstance.getPoolSize(), is(poolSize));140 AtomicReference<String> threadName = new AtomicReference<>();141 theInstance142 .submit(() -> threadName.set(Thread.currentThread().getName()))143 .get();144 assertThat(threadName.get(), startsWith(namePrefix));145 AtomicReference<Boolean> isDaemon = new AtomicReference<>();146 theInstance147 .submit(() -> isDaemon.set(Thread.currentThread().isDaemon()))148 .get();149 assertThat(isDaemon.get(), is(shouldBeDaemon));150 }151}...

Full Screen

Full Screen

Source:ScheduledThreadPoolSupplierTest.java Github

copy

Full Screen

...64 "scheduled-thread-pool-unit-test-",65 2,66 true);67 }68 private void testInstance(ScheduledThreadPoolExecutor theInstance,69 String namePrefix,70 int corePoolSize,71 boolean shouldBeDaemon) throws ExecutionException, InterruptedException {72 // test that we did indeed create an executor service73 assertThat(theInstance, notNullValue());74 // test that pool size is configured correctly75 assertThat(theInstance.getCorePoolSize(), is(corePoolSize));76 AtomicReference<String> threadName = new AtomicReference<>();77 theInstance.submit(() -> threadName.set(Thread.currentThread().getName())).get();78 assertThat(threadName.get(), startsWith(namePrefix));79 AtomicReference<Boolean> isDaemon = new AtomicReference<>();80 theInstance.submit(() -> isDaemon.set(Thread.currentThread().isDaemon())) .get();81 assertThat(isDaemon.get(), is(shouldBeDaemon));82 }83}...

Full Screen

Full Screen

Source:AssertThatTest.java Github

copy

Full Screen

...19import static org.hamcrest.CoreMatchers.not;20import static org.hamcrest.CoreMatchers.nullValue;21import static org.hamcrest.CoreMatchers.sameInstance;22import static org.hamcrest.CoreMatchers.startsWith;23import static org.hamcrest.CoreMatchers.theInstance;24import static org.junit.Assert.assertThat;25/**26 * Exploring assertThat assertion using Harmcrest matchers27 */28public class AssertThatTest {29 @Test30 public void testAssertThat() {31 String string = "String";32 assertThat(string, is("String")); // This assertions does the same33 assertThat(string, equalTo("String"));34 assertThat(string, is(equalTo("String")));35 }36 @Test37 public void testAssertThatChain() {38 String string = "String";39 assertThat(string, allOf(containsString("ing"), startsWith("S"), endsWith("g")));40 assertThat(string, anyOf(containsString("tr"), startsWith("A"), endsWith("g")));41 assertThat(string, not(allOf(containsString("tr"), startsWith("A"), endsWith("g"))));42 assertThat(string, both(startsWith("S")).and(endsWith("g")));43 assertThat(string, both(startsWith("S")).and(endsWith("s")).or(endsWith("g")));44 assertThat(string, either(startsWith("X")).or(startsWith("S")).or(endsWith("g")));45 }46 @Test47 public void testVerboseHamcrestMatcher() {48 String string = "S";49 // This assertion if fails return a better description as:50 // java.lang.AssertionError: Expected: a String that start with "S" but: was "Foo"51 assertThat(string, describedAs("a String that start with %0", startsWith("S"), "S"));52 }53 @Test54 public void testSimpleHamcrestMatcher() {55 // Creates a matcher that always matches, regardless of the examined object.56 assertThat(null, anything());57 assertThat(null, nullValue());58 assertThat(null, is(nullValue()));59 Object actual = new Object();60 Object expected = actual;61 assertThat(actual, isA(Object.class));62 assertThat(actual, sameInstance(expected));63 assertThat(actual, theInstance(expected));64 assertThat(actual, not(sameInstance(new Object())));65 }66 @Test67 public void testArrayHamcrestMatcher() {68 List<String> strings = Arrays.asList("String", "Strong", "Street");69 assertThat(strings, everyItem(isA(String.class)));70 assertThat(strings, everyItem(startsWith("S")));71 assertThat(strings, hasItem("Strong"));72 assertThat(strings, hasItem(is("Street")));73 assertThat(strings, hasItems("Street", "String"));74 assertThat(strings, hasItems(endsWith("g"), endsWith("t")));75 }76}...

Full Screen

Full Screen

Source:SomeObjectTest.java Github

copy

Full Screen

...18import static org.hamcrest.CoreMatchers.not;19import static org.hamcrest.CoreMatchers.notNullValue;20import static org.hamcrest.CoreMatchers.sameInstance;21import static org.hamcrest.CoreMatchers.startsWith;22import static org.hamcrest.CoreMatchers.theInstance;23import static org.junit.Assert.assertThat;24/**25 * @author Andrey Plotnikov26 */27public class SomeObjectTest {28 private SomeObject object;29 @Before30 public void setUp() throws Exception {31 object = new SomeObject();32 }33 @Test34 public void integerValueShouldBeValidated() throws Exception {35 object.setIntegerValue(1);36 assertThat(object.getIntegerValue(), is(1));37 assertThat(object.getIntegerValue(), is(not(2)));38 assertThat(object.getIntegerValue(), both(not(0)).and(not(2)));39 assertThat(object.getIntegerValue(), either(not(0)).or(not(2)));40 assertThat(object.getIntegerValue(), anyOf(is(0), is(1), is(2)));41 assertThat(object.getIntegerValue(), allOf(is(1), not(0), not(2)));42 }43 @Test44 public void stringValueShouldBeValidated() throws Exception {45 String value = "myValue";46 object.setStringValue(value);47 assertThat(object.getStringValue(), equalTo("myValue"));48 assertThat(object.getStringValue(), notNullValue());49 assertThat(object.getStringValue(), sameInstance(value));50 assertThat(object.getStringValue(), theInstance(value));51 assertThat(object.getStringValue(), both(startsWith("my")).and(containsString("V")).and(endsWith("e")));52 }53 @Test54 public void stringListShouldBeValidated() throws Exception {55 object.setStringList(Arrays.asList("i1", "i2", "i3", "iMyValue"));56 assertThat(object.getStringList(), notNullValue());57 assertThat(object.getStringList(), isA(List.class));58 assertThat(object.getStringList(), hasItem("i1"));59 assertThat(object.getStringList(), hasItem(startsWith("iMy")));60 assertThat(object.getStringList(), everyItem(startsWith("i")));61 assertThat(object.getStringList(), hasItems("i1", "i2"));62 //noinspection unchecked63 assertThat(object.getStringList(), hasItems(startsWith("i1"), startsWith("i2")));64 }...

Full Screen

Full Screen

Source:CallbackWrapperTest.java Github

copy

Full Screen

...19 */20package com.clxcommunications.xms;21import static org.hamcrest.CoreMatchers.is;22import static org.hamcrest.CoreMatchers.nullValue;23import static org.hamcrest.CoreMatchers.theInstance;24import static org.junit.Assert.assertThat;25import org.apache.http.concurrent.FutureCallback;26import org.junit.Test;27public class CallbackWrapperTest {28 private final FutureCallback<Integer> exceptionalCallback =29 new FutureCallback<Integer>() {30 @Override31 public void completed(Integer result) {32 throw COMPLETED_EXCEPTION;33 }34 @Override35 public void failed(Exception ex) {36 throw FAILED_EXCEPTION;37 }38 @Override39 public void cancelled() {40 throw CANCELLED_EXCEPTION;41 }42 };43 private static final RuntimeException COMPLETED_EXCEPTION =44 new RuntimeException("completed");45 private static final RuntimeException FAILED_EXCEPTION =46 new RuntimeException("failed");47 private static final RuntimeException CANCELLED_EXCEPTION =48 new RuntimeException("cancelled");49 @Test50 public void identityCanWrapNull() throws Exception {51 assertThat(CallbackWrapper.identity.wrap(null),52 is(nullValue()));53 }54 @Test55 public void identityCanWrapNonNull() throws Exception {56 assertThat(CallbackWrapper.identity.wrap(exceptionalCallback),57 is(theInstance(exceptionalCallback)));58 }59 @Test60 public void dropperCanWrapNull() throws Exception {61 assertThat(CallbackWrapper.exceptionDropper.wrap(null),62 is(nullValue()));63 }64}...

Full Screen

Full Screen

Source:AssumptionExample.java Github

copy

Full Screen

...4import org.junit.BeforeClass;5import org.junit.Test;6import java.io.File;7import static org.hamcrest.CoreMatchers.is;8import static org.hamcrest.CoreMatchers.theInstance;9import static org.junit.Assume.assumeThat;10import static org.junit.Assume.assumeTrue;11public class AssumptionExample {12 @BeforeClass13 public static void setUpClass() {14 // Will cause whole test class to be ignored15 assumeThat("Something", theInstance(Number.class));16 }17 @Before18 public void setUp() {19 // Will cause whole test class to be ignored20 assumeThat("Something", theInstance(Number.class));21 }22 @Test23 public void filenameIncludesUsername() {24 assumeThat(File.separatorChar, is('/'));25 assumeThat(new User("optimus").getConfigFileName(), is("config/optimus.conf"));26 }27 @Test28 public void correctBehaviorWHenFileNameIsNull() {29 //noinspection ConstantConditions30 assumeTrue(false);31 assumeThat(new Object(), is(""));32 }33}...

Full Screen

Full Screen

Source:MySQLConfigTest.java Github

copy

Full Screen

1package com.github.ctaras.repository.mysql;2import org.junit.Test;3import javax.sql.DataSource;4import static org.hamcrest.CoreMatchers.notNullValue;5import static org.hamcrest.CoreMatchers.theInstance;6import static org.junit.Assert.assertThat;7import static org.mockito.Mockito.mock;8public class MySQLConfigTest {9 @Test10 public void jdbcTemplate() {11 DataSource dataSource = mock(DataSource.class);12 MySQLConfig mySQLConfig = new MySQLConfig(dataSource);13 assertThat(mySQLConfig.jdbcTemplate(), notNullValue());14 assertThat(mySQLConfig.jdbcTemplate().getDataSource(), theInstance(dataSource));15 }16}...

Full Screen

Full Screen

theInstance

Using AI Code Generation

copy

Full Screen

1import static org.hamcrest.CoreMatchers.instanceOf;2import static org.hamcrest.MatcherAssert.assertThat;3import static org.hamcrest.core.Is.is;4import static org.hamcrest.core.IsNull.nullValue;5import java.util.ArrayList;6import java.util.List;7import org.junit.Test;8public class TestArrayList {9 public void testArrayList() {10 List<String> list = new ArrayList<String>();11 list.add("Hello");12 list.add("World");13 assertThat(list.size(), is(2));14 assertThat(list.get(0), is("Hello"));15 assertThat(list.get(1), is("World"));16 assertThat(list, instanceOf(ArrayList.class));17 assertThat(list.get(2), nullValue());18 }19}20 at org.junit.Assert.assertEquals(Assert.java:115)21 at org.junit.Assert.assertEquals(Assert.java:144)22 at org.junit.Assert.assertEquals(Assert.java:151)23 at org.junit.Assert.assertEquals(Assert.java:158)24 at org.junit.Assert.assertEquals(Assert.java:163)25 at TestArrayList.testArrayList(TestArrayList.java:21)26To fix the test case, we need to add the following line of code to the testArrayList() method:27list.add("Hello");28list.add("World");29OK (1 test)

Full Screen

Full Screen

theInstance

Using AI Code Generation

copy

Full Screen

1import static org.hamcrest.CoreMatchers.theInstance;2import static org.hamcrest.MatcherAssert.assertThat;3import static org.hamcrest.Matchers.is;4import org.junit.Test;5public class TheInstanceTest {6 public void testTheInstance() {7 Object o = new Object();8 assertThat(o, is(theInstance(o)));9 }10}

Full Screen

Full Screen

theInstance

Using AI Code Generation

copy

Full Screen

1import org.junit.Assert.assertThat2import org.hamcrest.CoreMatchers.instanceOf3import org.hamcrest.CoreMatchers.notNullValue4import org.hamcrest.CoreMatchers.theInstance5import org.junit.Test6class InstanceOfTest {7 fun test() {8 val list = ArrayList<String>()9 assertThat(list, instanceOf(ArrayList::class.java))10 assertThat(list, notNullValue())11 assertThat(list, theInstance(list))12 }13}

Full Screen

Full Screen

theInstance

Using AI Code Generation

copy

Full Screen

1import static org.hamcrest.CoreMatchers.*; 2import static org.hamcrest.MatcherAssert.assertThat;3public class TestHamcrest {4 public static void main(String[] args) {5 assertThat(5, not(equalTo(6)));6 }7}8import static org.hamcrest.CoreMatchers.*; 9import static org.hamcrest.MatcherAssert.assertThat;10public class TestHamcrest {11 public static void main(String[] args) {12 assertThat(5, not(equalTo(6)));13 }14}15public class TestHamcrest {16 public static void main(String[] args) {17 assertThat(5, not(equalTo(6)));18 }19}20import static org.hamcrest.CoreMatchers.*; 21import static org.hamcrest.MatcherAssert.assertThat;22public class TestHamcrest {23 public static void main(String[] args) {24 String[] stringArray = {"a", "b", "c"};25 assertThat(stringArray, hasItemInArray("a"));26 }27}28import static org.hamcrest.CoreMatchers.*; 29import static org.hamcrest.MatcherAssert.assertThat;30public class TestHamcrest {31 public static void main(String[] args) {32 String[] stringArray = {"a", "b", "c"};33 assertThat(stringArray, hasItemInArray("a"));34 }35}

Full Screen

Full Screen

theInstance

Using AI Code Generation

copy

Full Screen

1assertThat(theInstance(sameInstance(instance)), is(sameInstance(instance)));2assertThat(instance, is(sameInstance(instance)));3assertThat(instance, sameInstance(instance));4assertThat(instance, is(instance));5assertThat(instance, instance);6assertThat("foo", allOf(startsWith("f"), endsWith("o")));7assertThat("foo", both(startsWith("f")).and(endsWith("o")));8assertThat("foo", both(startsWith("f")).and(endsWith("o")));9assertThat("foo", anyOf(startsWith("f"), endsWith("o")));10assertThat("foo", either(startsWith("f")).or(endsWith("o")));11assertThat("foo", either(startsWith("f")).or(endsWith("o")));12assertThat("foo", anything());13assertThat("foo", not(nullValue()));14assertThat("foo", notNullValue());15assertThat("foo", anything());16assertThat("foo", not(nullValue()));17assertThat("foo", notNullValue());18assertThat("foo", anything());19assertThat("foo", not(null

Full Screen

Full Screen

JUnit Tutorial:

LambdaTest also has a detailed JUnit tutorial explaining its features, importance, advanced use cases, best practices, and more to help you get started with running your automation testing scripts.

JUnit Tutorial Chapters:

Here are the detailed JUnit testing chapters to help you get started:

  • Importance of Unit testing - Learn why Unit testing is essential during the development phase to identify bugs and errors.
  • Top Java Unit testing frameworks - Here are the upcoming JUnit automation testing frameworks that you can use in 2023 to boost your unit testing.
  • What is the JUnit framework
  • Why is JUnit testing important - Learn the importance and numerous benefits of using the JUnit testing framework.
  • Features of JUnit - Learn about the numerous features of JUnit and why developers prefer it.
  • JUnit 5 vs. JUnit 4: Differences - Here is a complete comparison between JUnit 5 and JUnit 4 testing frameworks.
  • Setting up the JUnit environment - Learn how to set up your JUnit testing environment.
  • Getting started with JUnit testing - After successfully setting up your JUnit environment, this chapter will help you get started with JUnit testing in no time.
  • Parallel testing with JUnit - Parallel Testing can be used to reduce test execution time and improve test efficiency. Learn how to perform parallel testing with JUnit.
  • Annotations in JUnit - When writing automation scripts with JUnit, we can use JUnit annotations to specify the type of methods in our test code. This helps us identify those methods when we run JUnit tests using Selenium WebDriver. Learn in detail what annotations are in JUnit.
  • Assertions in JUnit - Assertions are used to validate or test that the result of an action/functionality is the same as expected. Learn in detail what assertions are and how to use them while performing JUnit testing.
  • Parameterization in JUnit - Parameterized Test enables you to run the same automated test scripts with different variables. By collecting data on each method's test parameters, you can minimize time spent on writing tests. Learn how to use parameterization in JUnit.
  • Nested Tests In JUnit 5 - A nested class is a non-static class contained within another class in a hierarchical structure. It can share the state and setup of the outer class. Learn about nested annotations in JUnit 5 with examples.
  • Best practices for JUnit testing - Learn about the best practices, such as always testing key methods and classes, integrating JUnit tests with your build, and more to get the best possible results.
  • Advanced Use Cases for JUnit testing - Take a deep dive into the advanced use cases, such as how to run JUnit tests in Jupiter, how to use JUnit 5 Mockito for Unit testing, and more for JUnit testing.

JUnit Certification:

You can also check out our JUnit certification if you wish to take your career in Selenium automation testing with JUnit to the next level.

Run junit automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful