How to use ComparatorFactory class of org.assertj.core.api package

Best Assertj code snippet using org.assertj.core.api.ComparatorFactory

Source:MessageServiceTest.java Github

copy

Full Screen

...14import com.social.model.chat.Chat;15import com.social.model.chat.Message;16import com.social.model.user.User;17import com.social.repository.MessageRepository;18import com.social.test.comparator.ComparatorFactory;19import com.social.test.comparator.NotNullComparator;20import com.social.test.model.factory.ModelFactory;21import com.social.test.model.mutator.ChatMutators;22import com.social.test.model.mutator.MessageMutators;23import com.social.test.model.type.MessageType;24import com.social.test.model.type.PrivateChatType;25import com.social.test.model.type.UserType;26@ExtendWith(MockitoExtension.class)27public class MessageServiceTest {28 private @Mock MessageRepository messageRepository;29 private MessageService messageService;30 @BeforeEach31 public void setUp() {32 messageService = new MessageServiceImpl(messageRepository);33 }34 @Test35 public void create() {36 User author = ModelFactory37 .createModel(UserType.JOHN_SMITH);38 Chat chat = ModelFactory39 .createModelMutating(PrivateChatType.DEFAULT,40 ChatMutators.members(author));41 Mockito42 .when(messageRepository.save(Mockito.any()))43 .then(i -> {44 Message entity = i.getArgument(0);45 MessageMutators.id(1L).accept(entity);46 return entity;47 });48 Assertions49 .assertThat(messageService.create(chat, author, "How are you?"))50 .usingComparator(ComparatorFactory.getComparator(Message.class))51 .usingComparatorForFields(NotNullComparator.leftNotNull(), "createdAt")52 .isEqualTo(ModelFactory53 .createModelMutating(MessageType.RAW,54 MessageMutators.id(1L),55 MessageMutators.body("How are you?"),56 MessageMutators.author(ModelFactory57 .createModel(UserType.JOHN_SMITH)),58 MessageMutators.chat(ModelFactory59 .createModelMutating(PrivateChatType.DEFAULT,60 ChatMutators.members(ModelFactory61 .createModel(UserType.JOHN_SMITH))62 ))63 ));64 }65 @Test66 public void update_whenNoEntityWithIdAndAuthor_expectException() {67 User author = ModelFactory68 .createModel(UserType.JOHN_SMITH);69 Assertions70 .assertThatThrownBy(() -> messageService.update(2L, author, "How are you?"))71 .isExactlyInstanceOf(NotFoundException.class)72 .hasFieldOrPropertyWithValue("getCodes",73 new Object[]{"notFound.message.byIdAndAuthor"})74 .hasFieldOrPropertyWithValue("getArguments", new Object[]{2L, 1L});75 }76 @Test77 public void update() {78 User author = ModelFactory79 .createModel(UserType.JOHN_SMITH);80 Chat chat = ModelFactory81 .createModelMutating(PrivateChatType.DEFAULT,82 ChatMutators.members(author));83 Mockito84 .when(messageRepository.findByIdAndAuthor(2L, author))85 .thenReturn(Optional.of(ModelFactory86 .createModelMutating(MessageType.MEETING,87 MessageMutators.author(author),88 MessageMutators.chat(chat))89 ));90 Mockito91 .when(messageRepository.save(Mockito.any()))92 .then(i -> i.getArgument(0));93 Assertions94 .assertThat(messageService.update(2L, author, "How are you?"))95 .usingComparator(ComparatorFactory.getComparator(Message.class))96 .usingComparatorForFields(97 NotNullComparator.leftNotNull(), "createdAt", "updatedAt")98 .isEqualTo(ModelFactory99 .createModelMutating(MessageType.MEETING,100 MessageMutators.body("How are you?"),101 MessageMutators.author(ModelFactory102 .createModel(UserType.JOHN_SMITH)),103 MessageMutators.chat(ModelFactory104 .createModelMutating(PrivateChatType.DEFAULT,105 ChatMutators.members(ModelFactory106 .createModel(UserType.JOHN_SMITH))107 ))108 ));109 }110 @Test111 public void delete_whenNoEntityWithIdAndAuthor_expectException() {112 User author = ModelFactory113 .createModel(UserType.JOHN_SMITH);114 Assertions115 .assertThatThrownBy(() -> messageService.delete(0L, author))116 .isExactlyInstanceOf(NotFoundException.class)117 .hasFieldOrPropertyWithValue("getCodes",118 new Object[]{"notFound.message.byIdAndAuthor"})119 .hasFieldOrPropertyWithValue("getArguments", new Object[]{0L, 1L});120 }121 @Test122 public void delete() {123 User author = ModelFactory124 .createModel(UserType.JOHN_SMITH);125 Chat chat = ModelFactory126 .createModelMutating(PrivateChatType.DEFAULT,127 ChatMutators.members(author));128 Message entity = ModelFactory129 .createModelMutating(MessageType.WHATS_UP,130 MessageMutators.author(author),131 MessageMutators.chat(chat));132 Mockito133 .when(messageRepository.findByIdAndAuthor(1L, author))134 .thenReturn(Optional.of(entity));135 messageService.delete(1L, author);136 Mockito137 .verify(messageRepository)138 .delete(entity);139 }140 @Test141 public void findAll_byChat() {142 User author = ModelFactory143 .createModel(UserType.JOHN_SMITH);144 Chat chat = ModelFactory145 .createModelMutating(PrivateChatType.DEFAULT,146 ChatMutators.members(author));147 Mockito148 .when(messageRepository.findAllByChat(chat, Pageable.unpaged()))149 .thenReturn(new PageImpl<>(150 Lists.newArrayList(ModelFactory151 .createModelMutating(MessageType.WHATS_UP,152 MessageMutators.author(author),153 MessageMutators.chat(chat)))154 ));155 Assertions156 .assertThat(messageService.findAll(chat, Pageable.unpaged()))157 .usingElementComparator(ComparatorFactory.getComparator(Message.class))158 .usingComparatorForElementFieldsWithNames(159 NotNullComparator.leftNotNull(), "createdAt")160 .containsExactly(ModelFactory161 .createModelMutating(MessageType.WHATS_UP,162 MessageMutators.author(ModelFactory163 .createModel(UserType.JOHN_SMITH)),164 MessageMutators.chat(ModelFactory165 .createModelMutating(PrivateChatType.DEFAULT,166 ChatMutators.members(ModelFactory167 .createModel(UserType.JOHN_SMITH))168 ))169 ));170 }171}...

Full Screen

Full Screen

Source:ComparatorFactory_doubleComparatorWithPrecision_Test.java Github

copy

Full Screen

...22import org.junit.jupiter.params.ParameterizedTest;23import org.junit.jupiter.params.provider.Arguments;24import org.junit.jupiter.params.provider.CsvSource;25import org.junit.jupiter.params.provider.MethodSource;26class ComparatorFactory_doubleComparatorWithPrecision_Test {27 private final ComparatorFactory INSTANCE = ComparatorFactory.INSTANCE;28 @ParameterizedTest29 @CsvSource({30 "1.0, 1.1, 0.1",31 "0.111, 0.110, 0.001",32 "0.12345, 0.12346, 0.00001",33 "0.7654321, 0.7654320, 0.0000001",34 "1.2464, 1.2463, 0.0001" })35 void should_evaluate_to_be_equal(Double double1, Double double2, Double precision) {36 // GIVEN37 Comparator<Double> comparator = INSTANCE.doubleComparatorWithPrecision(precision);38 // WHEN39 int comparisonValue = comparator.compare(double1, double2);40 int inverseComparisonValue = comparator.compare(double2, double1);41 // THEN...

Full Screen

Full Screen

Source:ComparatorFactory_floatComparatorWithPrecision_Test.java Github

copy

Full Screen

...22import org.junit.jupiter.params.ParameterizedTest;23import org.junit.jupiter.params.provider.Arguments;24import org.junit.jupiter.params.provider.CsvSource;25import org.junit.jupiter.params.provider.MethodSource;26class ComparatorFactory_floatComparatorWithPrecision_Test {27 private final ComparatorFactory INSTANCE = ComparatorFactory.INSTANCE;28 @ParameterizedTest29 @CsvSource({30 "1.0, 1.1, 0.1",31 "0.111, 0.110, 0.001",32 "0.12345, 0.12346, 0.00001",33 "0.7654321, 0.7654320, 0.0000001",34 "1.2464, 1.2463, 0.0001" })35 void should_evaluate_to_be_equal(Float float1, Float float2, Float precision) {36 // GIVEN37 Comparator<Float> comparator = INSTANCE.floatComparatorWithPrecision(precision);38 // WHEN39 int comparisonValue = comparator.compare(float1, float2);40 int inverseComparisonValue = comparator.compare(float2, float1);41 // THEN...

Full Screen

Full Screen

ComparatorFactory

Using AI Code Generation

copy

Full Screen

1import static org.assertj.core.api.Assertions.*;2import org.assertj.core.api.ComparatorFactory;3import org.assertj.core.api.ComparableAssert;4import org.assertj.core.api.ComparableAssertBaseTest;5import org.assertj.core.internal.ComparatorBasedComparisonStrategy;6import org.assertj.core.internal.ComparisonStrategy;7import org.junit.jupiter.api.BeforeEach;8import org.junit.jupiter.api.Test;9public class ComparableAssert_usingComparatorForType_Test extends ComparableAssertBaseTest {10private ComparatorFactory comparatorFactory = new ComparatorFactory();11private ComparatorBasedComparisonStrategy strategy;12public void setUp() {13strategy = new ComparatorBasedComparisonStrategy(comparatorFactory.getComparatorForType(String.class));14}15protected ComparableAssert<Integer> invoke_api_method() {16return assertions.usingComparatorForType(comparatorFactory.getComparatorForType(String.class), String.class);17}18protected void verify_internal_effects() {19assertions.usingComparatorForType(comparatorFactory.getComparatorForType(String.class), String.class);20assertThat(getObjects(assertions)).usingFieldByFieldElementComparator().isEqualTo(getObjects(new ComparableAssert<>(8, strategy)));21}22public void should_return_this() {23ComparableAssert<?> assertions = new ComparableAssert<>(8);24ComparableAssert<?> returned = assertions.usingComparatorForType(comparatorFactory.getComparatorForType(String.class), String.class);25assertThat(returned).isSameAs(assertions);26}27public void should_use_comparator_for_type() {28ComparisonStrategy strategy = new ComparatorBasedComparisonStrategy(comparatorFactory.getComparatorForType(String.class));29ComparableAssert<String> assertions = new ComparableAssert<>("8", strategy);30assertions.usingComparatorForType(comparatorFactory.getComparatorForType(String.class), String.class);31assertThat(getObjects(assertions)).usingFieldByFieldElementComparator().isEqualTo(getObjects(new ComparableAssert<>("8", strategy)));32}33}34import static org.assertj.core.api.Assertions.*;35import org.assertj.core.api.ComparatorFactory;36import org.assertj.core.api.ComparableAssert;37import org.assertj.core.api.ComparableAssertBaseTest;38import org.assertj.core.internal.ComparatorBasedComparisonStrategy;39import org.assertj.core.internal.ComparisonStrategy;40import org.junit.jupiter.api.BeforeEach;41import org.junit.jupiter.api.Test;42public class ComparableAssert_usingComparatorForType_Test extends ComparableAssertBaseTest {43private ComparatorFactory comparatorFactory = new ComparatorFactory();

Full Screen

Full Screen

ComparatorFactory

Using AI Code Generation

copy

Full Screen

1import org.assertj.core.api.ComparisonStrategy;2import org.assertj.core.api.ComparisonStrategyFactory;3import org.assertj.core.api.ComparatorBasedComparisonStrategy;4import org.assertj.core.api.ComparisonStrategy;5import org.assertj.core.api.ComparisonStrategyFactory;6import

Full Screen

Full Screen

ComparatorFactory

Using AI Code Generation

copy

Full Screen

1package org.assertj.core.api;2import java.util.Comparator;3import java.util.Objects;4public class ComparatorFactory {5 public static <T> Comparator<T> nullsLast(Comparator<T> comparator) {6 Objects.requireNonNull(comparator);7 return (o1, o2) -> {8 if (o1 == null) {9 return o2 == null ? 0 : 1;10 } else if (o2 == null) {11 return -1;12 } else {13 return comparator.compare(o1, o2);14 }15 };16 }17}18package org.assertj.core.api;19import java.util.Comparator;20import java.util.Objects;21public class ComparatorFactory {22 public static <T> Comparator<T> nullsFirst(Comparator<T> comparator) {23 Objects.requireNonNull(comparator);24 return (o1, o2) -> {25 if (o1 == null) {26 return o2 == null ? 0 : -1;27 } else if (o2 == null) {28 return 1;29 } else {30 return comparator.compare(o1, o2);31 }32 };33 }34}35package org.assertj.core.api;36import java.util.Comparator;37import java.util.Objects;38public class ComparatorFactory {39 public static <T> Comparator<T> nullsFirst(Comparator<T> comparator) {40 Objects.requireNonNull(comparator);41 return (o1, o2) -> {42 if (o1 == null) {43 return o2 == null ? 0 : -1;44 } else if (o2 == null) {45 return 1;46 } else {47 return comparator.compare(o1, o2);48 }49 };50 }51}52package org.assertj.core.api;53import java.util.Comparator;54import java.util.Objects;55public class ComparatorFactory {56 public static <T> Comparator<T> nullsLast(Comparator<T> comparator) {57 Objects.requireNonNull(comparator);58 return (o1, o2) -> {59 if (o1 == null) {60 return o2 == null ? 0 : 1;61 } else if (o2 ==

Full Screen

Full Screen

ComparatorFactory

Using AI Code Generation

copy

Full Screen

1package org.assertj.core.api;2import java.util.Comparator;3import java.util.Objects;4public class ComparatorFactory {5 public static <T> Comparator<T> nullsLast(Comparator<T> comparator) {6 Objects.requireNonNull(comparator);7 return (o1, o2) -> {8 if (o1 == null) {9 return o2 == null ? 0 : 1;10 } else if (o2 == null) {11 return -1;12 } else {13 return comparator.compare(o1, o2);14 }15 };16 }17}18package org.assertj.core.api;19import java.util.Comparator;20import java.util.Objects;21public class ComparatorFactory {22 public static <T> Comparator<T> nullsFirst(Comparator<T> comparator) {23 Objects.requireNonNull(comparator);24 return (o1, o2) -> {25 if (o1 == null) {26 return o2 == null ? 0 : -1;27 } else if (o2 ==

Full Screen

Full Screen

ComparatorFactory

Using AI Code Generation

copy

Full Screen

1import org.assertj.core.api.ComparatorFactory;2public class Test {3 public static void main(String[] args) {4 ComparatorFactory factory = new ComparatorFactory();5 factory.comparator();6 }7}8Recommended Posts: Java | ComparatorFactory.comparator()9Java | ComparatorFactory.comparatorByType()10Java | ComparatorFactory.comparatorForType()11Java | ComparatorFactory.comparatorForElementPropertyOrField()12Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName)13Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, Comparator<?> comparator)14Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, Comparator<?> comparator, boolean nullsLast)15Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, boolean nullsLast)16Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, Comparator<?> comparator, boolean nullsLast, boolean nullsFirst)17Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, boolean nullsLast, boolean nullsFirst)18Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, boolean nullsLast, boolean nullsFirst, boolean ignoreCase)19Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, boolean nullsLast, boolean nullsFirst, boolean ignoreCase, boolean ignoreAccent)20Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, boolean nullsLast, boolean nullsFirst, boolean ignoreCase, boolean ignoreAccent, boolean ignorePunctuation)21Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, boolean nullsLast, boolean nullsFirst, boolean ignoreCase, boolean ignoreAccent, boolean ignorePunctuation, boolean ignoreWhitespace)22Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, boolean nullsLast, boolean nullsFirst, boolean ignoreCase, boolean ignoreAccent, boolean ignorePunctuation, boolean ignoreWhitespace, boolean ignoreCaseType)23Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, boolean nullsLast, boolean nullsFirst, boolean ignoreCase, boolean ignoreAccent, boolean ignorePunctuation, boolean ignoreWhitespace, boolean ignoreCaseType, boolean ignoreWidth)24Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, boolean nullsLast,

Full Screen

Full Screen

ComparatorFactory

Using AI Code Generation

copy

Full Screen

1import java.util.Date;2import org.assertj.core.api.ComparatorFactory;3import org.assertj.core.api.ComparableAssert;4import org.assertj.core.api.ComparableAssertBaseTest;5import org.junit.Test;6import static org.assertj.core.api.Assertions.assertThat;7import static org.assertj.core.api.Assertions.assertThatExceptionOfType;8public class DateTest extends ComparableAssertBaseTest {9 protected ComparableAssert<Date> invoke_api_method() {10 return assertions.isEqualTo(new Date());11 }12 protected void verify_internal_effects() {13 assertThat(getObjects(assertions)).containsExactly(getActual(assertions));14 assertThat(getComparables(assertions)).containsExactly(getActual(assertions));15 assertThat(getComparator(assertions)).isSameAs(ComparatorFactory.getComparatorForType(Date.class));16 }17 public void should_fail_if_actual_is_not_equal_to_expected() {18 assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThat(new Date(1)).isEqualTo(new Date(2)))19 .withMessageContaining("expected: <1970-01-01T00:00:00.002Z> but was: <1970-01-01T00:00:00.001Z>");20 }21 public void should_fail_if_actual_is_not_equal_to_expected_with_custom_comparison_strategy() {22 assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> assertThat(new Date(1)).usingComparatorForType(ComparatorFactory.getComparatorForType(Date.class), Date.class).isEqualTo(new Date(2)))23 .withMessageContaining("expected: <1970-01-01T00:00:00.002Z> but was: <1970-01-01T00:00:00.001Z>");24 }25}26import java.util.Date;27import org.assertj.core.api.ComparatorFactory;28import org.assertj.core.api.ComparableAssert;29import org.assertj.core.api.ComparableAssertBaseTest;30import org.junit.Test;31import static org.assertj.core.api.Assertions.assertThat;32import static org.assertj.core.api.Assertions.assertThatExceptionOfType;33public class DateTest extends ComparableAssertBaseTest {34 protected ComparableAssert<Date> invoke_api_method() {35 return assertions.isEqualTo(new Date());36 }37 protectednull) {38 return 1;39 } else {40 return comparator.compare(o1, o2);41 }42 };43 }44}45package org.assertj.core.api;46import java.util.Comparator;47import java.util.Objects;48public class ComparatorFactory {49 public static <T> Comparator<T> nullsFirst(Comparator<T> comparator) {50 Objects.requireNonNull(comparator);51 return (o1, o2) -> {52 if (o1 == null) {53 return o2 == null ? 0 : -1;54 } else if (o2 == null) {55 return 1;56 } else {57 return comparator.compare(o1, o2);58 }59 };60 }61}62package org.assertj.core.api;63import java.util.Comparator;64import java.util.Objects;65public class ComparatorFactory {66 public static <T> Comparator<T> nullsLast(Comparator<T> comparator) {67 Objects.requireNonNull(comparator);68 return (o1, o2) -> {69 if (o1 == null) {70 return o2 == null ? 0 : 1;71 } else if (o2 ==

Full Screen

Full Screen

ComparatorFactory

Using AI Code Generation

copy

Full Screen

1import org.assertj.core.api.ComparatorFactory;2import org.assertj.core.api.ComparatorBasedComparisonStrategy;3import java.util.Comparator;4public class ComparatorFactoryExample {5 public static void main(String[] args) {6 ComparatorFactory comparatorFactory = new ComparatorFactory();7 ComparatorBasedComparisonStrategy comparatorBasedComparisonStrategy = comparatorFactory.comparatorBasedComparisonStrategy();8 Comparator comparator = comparatorFactory.comparator();9 System.out.println("ComparatorBasedComparisonStrategy: " + comparatorBasedComparisonStrategy);10 System.out.println("Comparator: " + comparator);11 }12}

Full Screen

Full Screen

ComparatorFactory

Using AI Code Generation

copy

Full Screen

1import org.assertj.core.api.*;2import org.assertj.core.api.ComparisonStrategy;3import org.assertj.core.api.ComparatorFactory;4import org.assertj.core.api.Assertions;5import org.assertj.core.api.ObjectAssert;6import org.assertj.core.api.ObjectAssert;7import org.assertj.core.api.O

Full Screen

Full Screen

ComparatorFactory

Using AI Code Generation

copy

Full Screen

1import org.assertj.core.api.ComparatorFactory;2public class Test {3 public static void main(String[] args) {4 ComparatorFactory factory = new ComparatorFactory();5 factory.comparator();6 }7}8Recommended Posts: Java | ComparatorFactory.comparator()9Java | ComparatorFactory.comparatorByType()10Java | ComparatorFactory.comparatorForType()11Java | ComparatorFactory.comparatorForElementPropertyOrField()12Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName)13Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, Comparator<?> comparator)14Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, Comparator<?> comparator, boolean nullsLast)15Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, boolean nullsLast)16Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, Comparator<?> comparator, boolean nullsLast, boolean nullsFirst)17Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, boolean nullsLast, boolean nullsFirst)18Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, boolean nullsLast, boolean nullsFirst, boolean ignoreCase)19Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, boolean nullsLast, boolean nullsFirst, boolean ignoreCase, boolean ignoreAccent)20Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, boolean nullsLast, boolean nullsFirst, boolean ignoreCase, boolean ignoreAccent, boolean ignorePunctuation)21Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, boolean nullsLast, boolean nullsFirst, boolean ignoreCase, boolean ignoreAccent, boolean ignorePunctuation, boolean ignoreWhitespace)22Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, boolean nullsLast, boolean nullsFirst, boolean ignoreCase, boolean ignoreAccent, boolean ignorePunctuation, boolean ignoreWhitespace, boolean ignoreCaseType)23Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, boolean nullsLast, boolean nullsFirst, boolean ignoreCase, boolean ignoreAccent, boolean ignorePunctuation, boolean ignoreWhitespace, boolean ignoreCaseType, boolean ignoreWidth)24Java | ComparatorFactory.comparatorForElementPropertyOrField(String propertyName, boolean nullsLast,

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Assertj automation tests on LambdaTest cloud grid

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

Test Your Web Or Mobile Apps On 3000+ Browsers

Signup for free

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful