How to use everyItem method of org.hamcrest.core.Every class

Best junit code snippet using org.hamcrest.core.Every.everyItem

Source:TestCommand.java Github

copy

Full Screen

...4import java.util.List;5import static org.hamcrest.CoreMatchers.containsString;6import static org.hamcrest.CoreMatchers.equalTo;7import static org.hamcrest.Matchers.*;8import static org.hamcrest.core.Every.everyItem;9import static org.hamcrest.collection.IsCollectionWithSize.hasSize;10import static org.hamcrest.core.Is.is;11import static org.hamcrest.core.IsNot.not;12import static org.hamcrest.core.AnyOf.anyOf;13import static org.hamcrest.core.AllOf.allOf;14import static org.hamcrest.core.IsInstanceOf.instanceOf;15import static org.junit.Assert.*;16/**17 * @author : MustafaERGAN18 * Date: 30.10.2018 11:4619 */20public class TestCommand {21 @Test22 public void testFail() {23 fail();24 }25 @Test26 public void testAssertTruePass() {27 int a = 5;28 int b = 6;29 assertTrue((a+b) == 11);30 }31 @Test32 public void testAssertTrueFail() {33 int a = 5;34 int b = 8;35 assertTrue((a+b) == 11);36 }37 @Test38 public void testAssertsSame() {39 int a = 5;40 int b = 5;41 assertSame("A ve B Aynı", a,b);42 }43 @Test44 public void testAssertThat() {45 int a = 5;46 int b = 5;47 assertThat(a, is(b));48 }49 @Test50 public void testAssertThatWithMessageTrue() {51 int a = 5;52 int b = 5;53 assertThat("A ve B Eşit Değildir", a, is(b));54 //Aşağıdakilerde aynı işlemi yapmaktadır.55 assertThat(a, equalTo(b));56 assertThat(a, is(equalTo(b)));57 }58 @Test59 public void testAssertThatWithMessageFalse() {60 int a = 5;61 int b = 6;62 assertThat("A ve B Eşit Değildir", a, is(b));63 }64 @Test65 public void testEquals() {66 int a = 5;67 int b = 5;68 assertEquals(a,b);69 assertThat(a, is(equalTo(b)));70 }71 @Test72 public void testNotEquals() {73 int a = 5;74 int b = 6;75 assertNotEquals(a, b);76 assertThat(a, is(not(equalTo(b))));77 }78 //anyOf şartlardan birisnin olması yeterli durumundadır (OR)79 @Test80 public void anyOfTest1() {81 assertThat("Mustafa", anyOf(is("Mustafa"), containsString("ERGAN")));82 }83 @Test84 public void anyOfTest2() {85 assertThat("Mustafa", anyOf(is("Mus"), containsString("ERGAN")));86 }87 @Test88 public void anyOfTest3() {89 assertThat("Mustafa", anyOf(is("Mus"), containsString("ta")));90 }91 @Test92 public void anyOfTest4() {93 assertThat("Mustafa", anyOf(is("Mustafa"), containsString("fa")));94 }95 //şartlarınun hepsinin olması gerekli (AND)96 @Test97 public void allOfTest1() {98 assertThat("Mustafa", allOf(is("Mustafa"), containsString("fa")));99 }100 @Test101 public void allOfTest2() {102 assertThat("Mustafa", allOf(is("Mustafa"), containsString("Ergan")));103 }104 @Test105 public void allOfTest3() {106 assertThat("Mustafa", allOf(is("Mus"), containsString("fa")));107 }108 //Nesne türünü kontrol eder109 @Test110 public void instanceOfTest1() {111 assertThat(Long.valueOf(1), instanceOf(Long.class));112 }113 @Test114 public void instanceOfTest2() {115 assertThat(Long.valueOf(1), instanceOf(Integer.class));116 }117 //Listenin büyüklüğünü test eder118 @Test119 public void hasSizeTest1() {120 List<Integer> list = Arrays.asList(5, 2, 4);121 assertThat(list, hasSize(3));122 }123 @Test124 public void hasSizeTest2() {125 List<Integer> list = Arrays.asList(5, 2, 4);126 assertThat(list, hasSize(2));127 }128 //contains listenin sıraması ile birlikte kontrol eder129 //containsInAnyOrder sırama önemsiz liste öğelerini kontrol eder130 //everyItem üzerinde bir işlem yapıldığında onu kontrol eder131 @Test132 public void listTest1() {133 List<Integer> list = Arrays.asList(5, 2, 4);134 assertThat(list, hasSize(3));135 assertThat(list, contains(5, 2, 4));136 assertThat(list, containsInAnyOrder(2, 4, 5));137 assertThat(list, everyItem(greaterThan(1)));138 }139 @Test140 public void listTestFalse2() {141 List<Integer> list = Arrays.asList(5, 2, 4);142 assertThat(list, hasSize(3));143 assertThat(list, contains(5, 4, 2));144 assertThat(list, containsInAnyOrder(2, 4, 5));145 assertThat(list, everyItem(greaterThan(1)));146 }147 @Test148 public void listTestFalse3() {149 List<Integer> list = Arrays.asList(5, 2, 4);150 assertThat(list, hasSize(3));151 assertThat(list, contains(5, 2, 4));152 assertThat(list, containsInAnyOrder(2, 4));153 assertThat(list, everyItem(greaterThan(1)));154 }155 @Test156 public void arrayHasSizeOf() {157 Integer[] ints = new Integer[] { 7, 5, 12, 16 };158 assertThat(ints, arrayWithSize(4));159 assertThat(ints, arrayContaining(7, 5, 12, 16));160 }161 @Test162 public void isStringEmpty() {163 String stringToTest = "";164 assertThat(stringToTest, isEmptyString());165 }166 @Test167 public void isStringEmptyOfNull() {...

Full Screen

Full Screen

Source:SqlScriptTest.java Github

copy

Full Screen

1package eu.drus.jpa.unit.sql.dbunit;2import static org.hamcrest.CoreMatchers.containsString;3import static org.hamcrest.CoreMatchers.endsWith;4import static org.hamcrest.CoreMatchers.equalTo;5import static org.hamcrest.CoreMatchers.everyItem;6import static org.hamcrest.CoreMatchers.not;7import static org.hamcrest.CoreMatchers.startsWith;8import static org.junit.Assert.assertThat;9import static org.junit.Assert.fail;10import java.util.Iterator;11import java.util.List;12import java.util.NoSuchElementException;13import org.apache.commons.collections.IteratorUtils;14import org.junit.Test;15import eu.drus.jpa.unit.sql.dbunit.SqlScript;16public class SqlScriptTest {17 //@formatter:off18 private static final String TEST_SCRIPT =19 "code1 ;--comment\n" + // code with an inline comment20 " code2; --comment\n" + // code with an inline comment21 "\tcode3; -- comment\n" + // code with an inline comment22 "-- comment\n" + // just a comment23 " -- comment\n" + // just a comment24 "code4\t;\n" + // one statement25 " code5 ; code6;\n" + // line with two statements26 "code7; // comment\n" + // code with C style comment27 "/* comment */ code8;\n" + // multiline comment in a single line followed by code28 "/** comment\n comment\n comment **/ code9;" + // multi line comment followed by code29 "\tcode /* comment */ code10;\n" + // code with comments30 "code\n code,\n code\n code\n code\n code11 ;" + // multiline code31 " code12\t; # comment\n" + // code followed by MySQL style single line comment32 " \n\n;\n"; // just some empty lines33 //@formatter:on34 @SuppressWarnings("unchecked")35 @Test36 public void testRemovalOfCommentsProperSplittingOfStatementsAndTrimmingOfEachOfIt() {37 // GIVEN38 final SqlScript script = new SqlScript(TEST_SCRIPT);39 // WHEN40 final List<String> list = IteratorUtils.toList(script.iterator());41 // THEN42 assertThat(list.size(), equalTo(12));43 assertThat(list, everyItem(not(containsString("comment"))));44 assertThat(list, everyItem(not(startsWith(" "))));45 assertThat(list, everyItem(not(startsWith("\t"))));46 assertThat(list, everyItem(not(endsWith(" "))));47 assertThat(list, everyItem(not(endsWith("\t"))));48 }49 @Test(expected = UnsupportedOperationException.class)50 public void testSpliteratorIsNotSupported() {51 // GIVEN52 final SqlScript script = new SqlScript(TEST_SCRIPT);53 // WHEN54 script.spliterator();55 // THEN56 // UnsupportedOperationException is thrown57 }58 @Test59 public void testIterator() {60 // GIVEN61 final String token = "code";...

Full Screen

Full Screen

Source:AssertThatTest.java Github

copy

Full Screen

...10import static org.hamcrest.CoreMatchers.describedAs;11import static org.hamcrest.CoreMatchers.either;12import static org.hamcrest.CoreMatchers.endsWith;13import static org.hamcrest.CoreMatchers.equalTo;14import static org.hamcrest.CoreMatchers.everyItem;15import static org.hamcrest.CoreMatchers.hasItem;16import static org.hamcrest.CoreMatchers.hasItems;17import static org.hamcrest.CoreMatchers.is;18import static org.hamcrest.CoreMatchers.isA;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:PathPrunnerTest.java Github

copy

Full Screen

...26 .prunePath("/b")27 .accept(swagger);28 assertEquals(orgPathsCnt - 4, swagger.getPaths().size());29 assertEquals(orgDefCnt, swagger.getDefinitions().size());30 Assert.assertThat(swagger.getPaths().keySet(), Every.everyItem(not(StringStartsWith.startsWith("/b"))));31 }32 @Test33 public void prunePathBA() {34 int orgPathsCnt = swagger.getPaths().size();35 int orgDefCnt = swagger.getDefinitions().size();36 new PathPrunner()37 .prunePath("/b/propE")38 .prunePath("/a")39 .accept(swagger);40 assertEquals(orgPathsCnt - 3, swagger.getPaths().size());41 assertEquals(orgDefCnt, swagger.getDefinitions().size());42 Assert.assertThat(swagger.getPaths().keySet(), Every.everyItem(not(StringStartsWith.startsWith("/b/propE"))));43 Assert.assertThat(swagger.getPaths().keySet(), Every.everyItem(not(StringStartsWith.startsWith("/a"))));44 Assert.assertThat(swagger.getPaths().keySet(), hasItem(StringStartsWith.startsWith("/b")));45 }46 @Test47 public void pruneParent2() {48 int orgDefCnt = swagger.getDefinitions().size();49 new PathPrunner()50 .withType("Parent1")51 .accept(swagger);52 assertEquals(2, swagger.getPaths().size());53 Assert.assertThat(swagger.getPaths().keySet(), hasItems(54 is("/a"),55 is("/b")56 ));57 assertEquals(orgDefCnt, swagger.getDefinitions().size());...

Full Screen

Full Screen

Source:SieveOfEratosthenesPrimeNumbersTest.java Github

copy

Full Screen

1package com.udemy.andrei.math;2import static org.hamcrest.CoreMatchers.everyItem;3import static org.hamcrest.CoreMatchers.is;4import static org.junit.Assert.*;5import java.util.List;6import org.hamcrest.BaseMatcher;7import org.hamcrest.Description;8import org.hamcrest.Matcher;9import org.junit.Ignore;10import org.junit.Test;11public class SieveOfEratosthenesPrimeNumbersTest {12 private static final Matcher<Integer> primeMatcher = new PrimeMatcher();13 public static final class PrimeMatcher extends BaseMatcher<Integer> {14 @Override15 public boolean matches(Object item) {16 return PrimeTest.isPrimeFaster((int) item);17 }18 @Override19 public void describeTo(Description description) {20 description.appendText("prime");21 }22 @Override23 public void describeMismatch(Object item, Description description) {24 description.appendValue(item).appendText(" is not a prime");25 }26 }27 @Test28 public void primesTill_20() {29 List<Integer> primes = SieveOfEratosthenesPrimeNumbers.primeNumbersTill(20);30 31 assertThat(primes.size(), is(8));32 assertThat(primes, everyItem(isPrime()));33 }34 35 @Test36 public void primesTill_100() {37 List<Integer> primes = SieveOfEratosthenesPrimeNumbers.primeNumbersTill(100);38 39 assertThat(primes.size(), is(25));40 assertThat(primes, everyItem(isPrime()));41 }42 43 @Test44 public void primesTill_10000() {45 List<Integer> primes = SieveOfEratosthenesPrimeNumbers.primeNumbersTill(10000);46 47 assertThat(primes.size(), is(1229));48 assertThat(primes, everyItem(isPrime()));49 }50 51 @Test52 public void primesTill_100000() {53 List<Integer> primes = SieveOfEratosthenesPrimeNumbers.primeNumbersTill(100000);54 55 assertThat(primes.size(), is(9592));56 assertThat(primes, everyItem(isPrime()));57 }58 59 @Test60 public void primesTill_1000000() {61 List<Integer> primes = SieveOfEratosthenesPrimeNumbers.primeNumbersTill(1000000);62 63 assertThat(primes.size(), is(78498));64 assertThat(primes, everyItem(isPrime()));65 }66 67 //Takes long time68 @Ignore69 @Test70 public void primesTill_899999963() {71 List<Integer> primes = SieveOfEratosthenesPrimeNumbers.primeNumbersTill(89999999);72 73 assertThat(primes.size(), is(5216954));74 assertThat(primes, everyItem(isPrime()));75 }76 77 public static PrimeMatcher isPrime(){78 return new PrimeMatcher();79 }80}...

Full Screen

Full Screen

Source:MainResourceTest.java Github

copy

Full Screen

...15 .when().get("/app/topQuoteVolume")16 .then()17 .statusCode(200)18 .body("size()", is(5))19 .body("symbol", everyItem(endsWith("BTC")))20 .body("quoteVolume", everyItem(notNullValue()));21 }22 @Test23 void topTradeCount() {24 given()25 .when().get("/app/topTradeCount")26 .then()27 .statusCode(200)28 .body("size()", is(5))29 .body("symbol", everyItem(endsWith("USDT")))30 .body("tradeNumber", everyItem(notNullValue()));31 }32 @Test33 void topNotionalValue() {34 given()35 .when().get("/app/topNotionalValue")36 .then()37 .statusCode(200)38 .body("size()", is(5))39 .body("symbol", everyItem(endsWith("BTC")))40 .body("notionalValueBids", everyItem(notNullValue()))41 .body("notionalValueAsks", everyItem(notNullValue()));42 }43 @Test44 void topTradePriceSpread() {45 given()46 .when().get("/app/topTradePriceSpread")47 .then()48 .statusCode(200)49 .body("size()", is(5))50 .body("symbol", everyItem(endsWith("USDT")))51 .body("priceSpread", everyItem(notNullValue()));52 }53 @Test54 void testMetricFormat() throws InterruptedException {55 Thread.sleep(10000);56 given()57 .when().get("/metrics")58 .then()59 .statusCode(200)60 .body(containsString("topsymbol_price_spread_"));61 }62}...

Full Screen

Full Screen

Source:EveryTest.java Github

copy

Full Screen

...8import static org.hamcrest.core.StringContains.containsString;9import static org.junit.Assert.assertEquals;10public class EveryTest {11 @Test public void isTrueWhenEveryValueMatches() {12 assertThat(asList("AaA", "BaB", "CaC"), Every.everyItem(containsString("a")));13 assertThat(asList("AbA", "BbB", "CbC"), not(Every.everyItem(containsString("a"))));14 }15 16 @Test public void isAlwaysTrueForEmptyLists() {17 assertThat(new ArrayList<String>(), Every.everyItem(containsString("a"))); 18 }19 20 @Test public void describesItself() {21 final Every<String> each= new Every<String>(containsString("a"));22 assertEquals("every item is a string containing \"a\"", each.toString());23 24 StringDescription description = new StringDescription(); 25 each.matchesSafely(asList("BbB"), description);26 assertEquals("an item was \"BbB\"", description.toString());27 }28}...

Full Screen

Full Screen

Source:HealthCheckTest.java Github

copy

Full Screen

1package org.acme.microprofile.health;2import static io.restassured.RestAssured.given;3import static org.hamcrest.CoreMatchers.anyOf;4import static org.hamcrest.CoreMatchers.everyItem;5import static org.hamcrest.CoreMatchers.is;6import org.junit.jupiter.api.Test;7import io.quarkus.test.junit.QuarkusTest;8@QuarkusTest9public class HealthCheckTest {10 @Test11 public void testHealthCheck() {12 given()13 .when()14 .get("/health/live")15 .then()16 .statusCode(200)17 .body("status", is("UP"))18 .body("checks.size()", is(2))19 .body("checks.name", everyItem(anyOf(20 is("Simple health check"),21 is("Health check with data"))))22 .body("checks.status", everyItem(is("UP")))23 .body("checks.data.foo[0]", is("fooValue"))24 .body("checks.data.bar[0]", is("barValue"));25 }26}...

Full Screen

Full Screen

everyItem

Using AI Code Generation

copy

Full Screen

1assertThat(Arrays.asList("foo", "foo"), everyItem);2assertThat(Arrays.asList("foo", "bar"), everyItem);3assertThat(Arrays.asList("bar", "bar"), everyItem);4assertThat(Arrays.asList("foo", "foo"), everyItem(equalTo("foo")));5assertThat(Arrays.asList("foo", "bar"), everyItem(equalTo("foo")));6assertThat(Arrays.asList("bar", "bar"), everyItem(equalTo("foo")));7MatcherAssert.assertThat(Arrays.asList("foo", "foo"), everyItem(equalTo("foo")));8MatcherAssert.assertThat(Arrays.asList("foo", "bar"), everyItem(equalTo("foo")));9MatcherAssert.assertThat(Arrays.asList("bar", "bar"), everyItem(equalTo("foo")));10org.hamcrest.MatcherAssert.assertThat(Arrays.asList("foo", "foo"), everyItem(equalTo("foo")));11org.hamcrest.MatcherAssert.assertThat(Arrays.asList("foo", "bar"), everyItem(equalTo("foo")));12org.hamcrest.MatcherAssert.assertThat(Arrays.asList("bar", "bar"), everyItem(equalTo("foo")));13org.junit.Assert.assertThat(Arrays.asList("foo", "foo"), everyItem(equalTo("foo")));14org.junit.Assert.assertThat(Arrays.asList("foo", "bar"), everyItem(equalTo("foo")));15org.junit.Assert.assertThat(Arrays.asList("bar", "bar"), everyItem(equalTo("foo")));16Assert.assertThat(Arrays.asList("foo", "foo"), everyItem(equalTo("foo")));17Assert.assertThat(Arrays.asList("foo", "bar"), everyItem(equalTo("foo")));18Assert.assertThat(Arrays.asList("bar", "bar"), everyItem(equalTo("foo")));19org.hamcrest.MatcherAssert.assertThat(Arrays.asList("foo", "foo"), everyItem(equalTo("foo")));20org.hamcrest.MatcherAssert.assertThat(Arrays.asList("foo", "bar"), everyItem(equalTo("foo")));21org.hamcrest.MatcherAssert.assertThat(Arrays.asList("bar", "bar"), everyItem(equalTo("foo")));22org.junit.Assert.assertThat(Arrays.asList("foo", "foo"),

Full Screen

Full Screen

everyItem

Using AI Code Generation

copy

Full Screen

1import org.hamcrest.core.Every2assertThat(list, everyItem(equalTo(10)))3import org.hamcrest.core.Every4assertThat(list, everyItem(equalTo(10)))5import org.hamcrest.core.Every6assertThat(list, everyItem(equalTo(10)))7import org.hamcrest.core.Every8assertThat(list, everyItem(equalTo(10)))9import org.hamcrest.core.Every10assertThat(list, everyItem(equalTo(10)))11import org.hamcrest.core.Every12assertThat(list, everyItem(equalTo(10)))

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.

Most used method in Every

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful