Best Assertj code snippet using org.assertj.core.api.AbstractLocalDateAssert.convertToLocalDateArray
Source:AbstractLocalDateAssert.java
...265 * Strings.266 */267 public SELF isIn(String... localDatesAsString) {268 checkIsNotNullAndNotEmpty(localDatesAsString);269 return isIn(convertToLocalDateArray(localDatesAsString));270 }271 /**272 * Same assertion as {@link #isNotIn(Object...)} (where Objects are expected to be {@link LocalDate}) but here you273 * pass {@link LocalDate} String representations that must follow <a href=274 * "http://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ISO_LOCAL_DATE"275 * >ISO LocalDate format</a> to allow calling {@link LocalDate#parse(CharSequence)} method.276 * <p>277 * Example :278 * <pre><code class='java'> // use String based representation of LocalDate279 * assertThat(parse("2000-01-01")).isNotIn("1999-12-31", "2000-01-02");</code></pre>280 * 281 * @param localDatesAsString Array of String representing a {@link LocalDate}.282 * @return this assertion object.283 * @throws AssertionError if the actual {@code LocalDate} is {@code null}.284 * @throws IllegalArgumentException if given String is null or can't be converted to a {@link LocalDate}.285 * @throws AssertionError if the actual {@code LocalDate} is in the {@link LocalDate}s built from given286 * Strings.287 */288 public SELF isNotIn(String... localDatesAsString) {289 checkIsNotNullAndNotEmpty(localDatesAsString);290 return isNotIn(convertToLocalDateArray(localDatesAsString));291 }292 /**293 * Verifies that the actual {@code LocalDate} is today, that is matching current year, month and day.294 * <p>295 * Example:296 * <pre><code class='java'> // assertion will pass297 * assertThat(LocalDate.now()).isToday();298 *299 * // assertion will fail300 * assertThat(theFellowshipOfTheRing.getReleaseDate()).isToday();</code></pre>301 *302 * @return this assertion object.303 * @throws AssertionError if the actual {@code LocalDate} is {@code null}.304 * @throws AssertionError if the actual {@code LocalDate} is not today.305 */306 public SELF isToday() {307 Objects.instance().assertNotNull(info, actual);308 if (!actual.isEqual(LocalDate.now())) throw Failures.instance().failure(info, shouldBeToday(actual));309 return myself;310 }311 /**312 * Verifies that the actual {@link LocalDate} is in the [start, end] period (start and end included).313 * <p>314 * Example:315 * <pre><code class='java'> LocalDate localDate = LocalDate.now();316 * 317 * // assertions succeed:318 * assertThat(localDate).isBetween(localDate.minusDays(1), localDate.plusDays(1))319 * .isBetween(localDate, localDate.plusDays(1))320 * .isBetween(localDate.minusDays(1), localDate)321 * .isBetween(localDate, localDate);322 * 323 * // assertions fail:324 * assertThat(localDate).isBetween(localDate.minusDays(10), localDate.minusDays(1));325 * assertThat(localDate).isBetween(localDate.plusDays(1), localDate.plusDays(10));</code></pre>326 * 327 * @param startInclusive the start value (inclusive), expected not to be null.328 * @param endInclusive the end value (inclusive), expected not to be null.329 * @return this assertion object.330 * @throws AssertionError if the actual value is {@code null}.331 * @throws NullPointerException if start value is {@code null}.332 * @throws NullPointerException if end value is {@code null}.333 * @throws AssertionError if the actual value is not in [start, end] period.334 * 335 * @since 3.7.1336 */337 public SELF isBetween(LocalDate startInclusive, LocalDate endInclusive) {338 comparables.assertIsBetween(info, actual, startInclusive, endInclusive, true, true);339 return myself;340 }341 /**342 * Same assertion as {@link #isBetween(LocalDate, LocalDate)} but here you pass {@link LocalDate} String representations 343 * which must follow <a href="http://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ISO_LOCAL_DATE">ISO LocalDate format</a> 344 * to allow calling {@link LocalDate#parse(CharSequence)} method.345 * <p>346 * Example:347 * <pre><code class='java'> LocalDate firstOfJanuary2000 = LocalDate.parse("2000-01-01");348 * 349 * // assertions succeed:350 * assertThat(firstOfJanuary2000).isBetween("1999-01-01", "2001-01-01")351 * .isBetween("2000-01-01", "2001-01-01")352 * .isBetween("1999-01-01", "2000-01-01")353 * .isBetween("2000-01-01", "2000-01-01");354 * 355 * // assertion fails:356 * assertThat(firstOfJanuary2000).isBetween("1999-01-01", "1999-12-31");</code></pre>357 * 358 * @param startInclusive the start value (inclusive), expected not to be null.359 * @param endInclusive the end value (inclusive), expected not to be null.360 * @return this assertion object.361 * 362 * @throws AssertionError if the actual value is {@code null}.363 * @throws NullPointerException if start value is {@code null}.364 * @throws NullPointerException if end value is {@code null}.365 * @throws DateTimeParseException if any of the given String can't be converted to a {@link LocalDate}.366 * @throws AssertionError if the actual value is not in [start, end] period.367 * 368 * @since 3.7.1369 */370 public SELF isBetween(String startInclusive, String endInclusive) {371 return isBetween(parse(startInclusive), parse(endInclusive));372 }373 /**374 * Verifies that the actual {@link LocalDate} is in the ]start, end[ period (start and end excluded).375 * <p>376 * Example:377 * <pre><code class='java'> LocalDate localDate = LocalDate.now();378 * 379 * // assertion succeeds:380 * assertThat(localDate).isStrictlyBetween(localDate.minusDays(1), localDate.plusDays(1));381 * 382 * // assertions fail:383 * assertThat(localDate).isStrictlyBetween(localDate.minusDays(10), localDate.minusDays(1));384 * assertThat(localDate).isStrictlyBetween(localDate.plusDays(1), localDate.plusDays(10));385 * assertThat(localDate).isStrictlyBetween(localDate, localDate.plusDays(1));386 * assertThat(localDate).isStrictlyBetween(localDate.minusDays(1), localDate);</code></pre>387 * 388 * @param startInclusive the start value (inclusive), expected not to be null.389 * @param endInclusive the end value (inclusive), expected not to be null.390 * @return this assertion object.391 * @throws AssertionError if the actual value is {@code null}.392 * @throws NullPointerException if start value is {@code null}.393 * @throws NullPointerException if end value is {@code null}.394 * @throws AssertionError if the actual value is not in ]start, end[ period.395 * 396 * @since 3.7.1397 */398 public SELF isStrictlyBetween(LocalDate startInclusive, LocalDate endInclusive) {399 comparables.assertIsBetween(info, actual, startInclusive, endInclusive, false, false);400 return myself;401 }402 /**403 * Same assertion as {@link #isStrictlyBetween(LocalDate, LocalDate)} but here you pass {@link LocalDate} String representations 404 * which must follow <a href="http://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ISO_LOCAL_DATE">ISO LocalDate format</a> 405 * to allow calling {@link LocalDate#parse(CharSequence)} method.406 * <p>407 * Example:408 * <pre><code class='java'> LocalDate firstOfJanuary2000 = LocalDate.parse("2000-01-01");409 * 410 * // assertion succeeds:411 * assertThat(firstOfJanuary2000).isStrictlyBetween("1999-01-01", "2001-01-01");412 * 413 * // assertions fail:414 * assertThat(firstOfJanuary2000).isStrictlyBetween("1999-01-01", "1999-12-31");415 * assertThat(firstOfJanuary2000).isStrictlyBetween("2000-01-01", "2001-01-01");416 * assertThat(firstOfJanuary2000).isStrictlyBetween("1999-01-01", "2000-01-01");</code></pre>417 * 418 * @param startInclusive the start value (inclusive), expected not to be null.419 * @param endInclusive the end value (inclusive), expected not to be null.420 * @return this assertion object.421 * 422 * @throws AssertionError if the actual value is {@code null}.423 * @throws NullPointerException if start value is {@code null}.424 * @throws NullPointerException if end value is {@code null}.425 * @throws DateTimeParseException if any of the given String can't be converted to a {@link LocalDate}.426 * @throws AssertionError if the actual value is not in ]start, end[ period.427 * 428 * @since 3.7.1429 */430 public SELF isStrictlyBetween(String startInclusive, String endInclusive) {431 return isStrictlyBetween(parse(startInclusive), parse(endInclusive));432 }433 /**434 * {@inheritDoc}435 */436 @Override437 protected LocalDate parse(String localDateAsString) {438 return LocalDate.parse(localDateAsString);439 }440 private static Object[] convertToLocalDateArray(String... localDatesAsString) {441 return Arrays.stream(localDatesAsString).map(LocalDate::parse).toArray();442 }443 private void checkIsNotNullAndNotEmpty(Object[] values) {444 checkArgument(values != null, "The given LocalDate array should not be null");445 checkArgument(values.length > 0, "The given LocalDate array should not be empty");446 }447 /**448 * Check that the {@link LocalDate} string representation to compare actual {@link LocalDate} to is not null,449 * otherwise throws a {@link IllegalArgumentException} with an explicit message450 * 451 * @param localDateAsString String representing the {@link LocalDate} to compare actual with452 * @throws IllegalArgumentException with an explicit message if the given {@link String} is null453 */454 private static void assertLocalDateAsStringParameterIsNotNull(String localDateAsString) {...
convertToLocalDateArray
Using AI Code Generation
1import static java.time.Month.*;2import static java.time.MonthDay.*;3import static java.time.temporal.ChronoUnit.*;4import static org.assertj.core.api.Assertions.*;5import java.time.LocalDate;6import java.time.MonthDay;7import org.junit.jupiter.api.Test;8class AssertjLocalDateTest {9 void test() {10 LocalDate date = LocalDate.of(2019, 12, 31);11 assertThat(date).isEqualToIgnoringDays(LocalDate.of(2019, DECEMBER, 1));12 assertThat(date).isEqualToIgnoringMonths(LocalDate.of(2019, JANUARY, 31));13 assertThat(date).isEqualToIgnoringYears(LocalDate.of(2000, DECEMBER, 31));14 assertThat(date).isEqualToIgnoringTime(LocalDate.of(2019, DECEMBER, 31));15 assertThat(date).isEqualToIgnoringHours(LocalDate.of(2019, DECEMBER, 31));16 assertThat(date).isEqualToIgnoringMinutes(LocalDate.of(2019, DECEMBER, 31));17 assertThat(date).isEqualToIgnoringSeconds(LocalDate.of(2019, DECEMBER, 31));18 assertThat(date).isEqualToIgnoringNanos(LocalDate.of(2019, DECEMBER, 31));19 assertThat(date).isEqualToIgnoringTime(LocalDate.of(2019, DECEMBER, 31));20 assertThat(date).isCloseTo(LocalDate.of(2019, DECEMBER, 31), DAYS);21 assertThat(date).isCloseTo(LocalDate.of(2019, DECEMBER, 31), HOURS);22 assertThat(date).isCloseTo(LocalDate.of(2019, DECEMBER, 31), MINUTES);23 assertThat(date).isCloseTo(LocalDate.of(2019, DECEMBER, 31), SECONDS);24 assertThat(date).isCloseTo(LocalDate.of(2019, DECEMBER, 31), MILLIS);25 assertThat(date).isCloseTo(LocalDate.of(2019, DECEMBER, 31), NANOS);26 assertThat(date).isBetween(LocalDate.of(2019, JANUARY, 1), LocalDate.of(2020, JANUARY, 1));27 assertThat(date).isStrictlyBetween(LocalDate.of(2019, JANUARY, 1), LocalDate.of(2020, JANUARY, 1));28 assertThat(date).isIn(LocalDate.of(2019, JANUARY, 1), LocalDate.of(2019, DECEMBER, 31));
convertToLocalDateArray
Using AI Code Generation
1import static org.assertj.core.api.Assertions.assertThat;2import java.time.LocalDate;3import java.time.Month;4import org.junit.Test;5public class LocalDateAssert_convertToLocalDateArray_Test {6 public void should_convert_to_LocalDate_array() {7 LocalDate[] dates = assertThat(LocalDate.of(2010, Month.JANUARY, 1)).convertToLocalDateArray();8 assertThat(dates).containsExactly(LocalDate.of(2010, Month.JANUARY, 1));9 }10}11Related posts: AssertJ LocalDateAssert isBetween() Example AssertJ LocalDateAssert
convertToLocalDateArray
Using AI Code Generation
1import static org.assertj.core.api.Assertions.assertThat;2import java.time.LocalDate;3import java.time.Month;4import java.util.List;5import org.junit.Test;6public class AbstractLocalDateAssert_convertToLocalDateArray_Test {7public void convertToLocalDateArray_Test() {8 LocalDate date1 = LocalDate.of(2017, Month.JANUARY, 1);9 LocalDate date2 = LocalDate.of(2017, Month.JANUARY, 2);10 LocalDate date3 = LocalDate.of(2017, Month.JANUARY, 3);11 List<LocalDate> dates = Arrays.asList(date1, date2, date3);12 LocalDate[] dateArray = {date1, date2, date3};13 assertThat(dates).containsOnly(dateArray);14}15}16Related posts: Java 8 – LocalDate.now() example Java 8 – LocalDate.of() example Java 8 – LocalDate.ofEpochDay() example Java 8 – LocalDate.ofYearDay() example Java 8 – LocalDate.parse() example Java 8 – LocalDate.with() example Java 8 – LocalDate.withDayOfMonth() example Java 8 – LocalDate.withDayOfYear() example Java 8 – LocalDate.withMonth() example Java 8 – LocalDate.withYear() example Java 8 – LocalDate.with(TemporalAdjuster) example Java 8 – LocalDate.plus() example Java 8 – LocalDate.plusDays() example Java 8 – LocalDate.plusMonths() example Java 8 – LocalDate.plusWeeks() example Java 8 – LocalDate.plusYears() example Java 8 – LocalDate.minus() example Java 8 – LocalDate.minusDays() example Java 8 – LocalDate.minusMonths() example Java 8 – LocalDate.minusWeeks() example Java 8 – LocalDate.minusYears() example Java 8 – LocalDate.isLeapYear() example Java 8 – LocalDate.isEqual() example Java 8 – LocalDate.isAfter() example Java 8 – LocalDate.isBefore() example Java 8 – LocalDate.isSupported() example Java 8 – LocalDate.get() example Java 8 – LocalDate.getYear() example Java 8 – LocalDate.getMonth() example Java 8 – LocalDate.getMonth
convertToLocalDateArray
Using AI Code Generation
1import static org.assertj.core.api.Assertions.assertThat;2import java.time.LocalDate;3import java.util.List;4public class AbstractLocalDateAssert_convertToLocalDateArray_Test {5 public void should_convert_to_localDate_array() {6 LocalDate[] localDates = { LocalDate.of(2012, 1, 1), LocalDate.of(2012, 1, 2) };7 List<LocalDate> list = assertThat(localDates).convertToLocalDateArray().asList();8 assertThat(list).containsExactly(LocalDate.of(2012, 1, 1), LocalDate.of(2012, 1, 2));9 }10}
convertToLocalDateArray
Using AI Code Generation
1LocalDate[] dateArray = {LocalDate.of(2019, 12, 31), LocalDate.of(2018, 12, 31), LocalDate.of(2017, 12, 31)};2LocalDate[] expectedDateArray = {LocalDate.of(2019, 12, 31), LocalDate.of(2018, 12, 31), LocalDate.of(2017, 12, 31)};3assertThat(dateArray).usingElementComparatorIgnoringFields("dayOfMonth").containsExactlyInAnyOrder(expectedDateArray);4assertThat(dateArray).usingElementComparatorIgnoringFields("dayOfMonth").containsExactlyInAnyOrder(expectedDateArray);5assertThat(dateArray).usingElementComparatorOnFields("dayOfMonth").containsExactlyInAnyOrder(expectedDateArray);6LocalDate[] dateArray = {LocalDate.of(2019, 12, 31), LocalDate.of(2018, 12, 31), LocalDate.of(2017, 12, 31)};7LocalDate[] expectedDateArray = {LocalDate.of(2019, 12, 31), LocalDate.of(2018, 12, 31), LocalDate.of(2017, 12, 31)};8assertThat(dateArray).usingElementComparatorIgnoringFields("dayOfMonth").containsExactlyInAnyOrder(expectedDateArray);9assertThat(dateArray).usingElementComparatorIgnoringFields("dayOfMonth").containsExactlyInAnyOrder(expectedDateArray);10assertThat(dateArray).usingElementComparatorOnFields("dayOfMonth").containsExactlyInAnyOrder(expectedDateArray);11LocalDate[] dateArray = {LocalDate.of(2019, 12, 31), LocalDate.of(2018, 12, 31), LocalDate.of(2017, 12
convertToLocalDateArray
Using AI Code Generation
1import java.time.LocalDate;2import java.util.List;3import org.junit.Test;4import static java.time.Month.*;5import static java.time.Month.AUGUST;6import static org.assertj.core.api.Assertions.assertThat;7public class LocalDateAssert_convertToLocalDateArray_Test {8 public void test_convertToLocalDateArray_assertion() {9 List<LocalDate> dates = LocalDate.of(2012, AUGUST, 30).datesUntil(LocalDate.of(2012, SEPTEMBER, 4)).collect(toList());10 assertThat(dates).convertToLocalDateArray().containsExactly(LocalDate.of(2012, AUGUST, 30),11 LocalDate.of(2012, AUGUST, 31),12 LocalDate.of(2012, SEPTEMBER, 1),13 LocalDate.of(2012, SEPTEMBER, 2),14 LocalDate.of(2012, SEPTEMBER, 3),15 LocalDate.of(2012, SEPTEMBER, 4));16 }17}18import static java.time.Month.AUGUST;19import static java.time.Month.SEPTEMBER;20import static java.util.stream.Collectors.toList;21import static org.assertj.core.api.Assertions.assertThat;22import java.time.LocalDate;23import java.util.List;24import org.junit.Test;25public class LocalDateAssert_convertToLocalDateArray_Test {26 public void test_convertToLocalDateArray_assertion() {27 List<LocalDate> dates = LocalDate.of(2012, AUGUST, 30).datesUntil(LocalDate.of(2012, SEPTEMBER, 4)).collect(toList());28 assertThat(dates).convertToLocalDateArray().containsExactly(LocalDate.of(2012, AUGUST, 30),29 LocalDate.of(2012, AUGUST, 31),30 LocalDate.of(2012, SEPTEMBER, 1),31 LocalDate.of(2012, SEPTEMBER, 2),32 LocalDate.of(2012, SEPTEMBER, 3),33 LocalDate.of(2012, SEPTEMBER, 4));34 }35}36import static java.time.Month.AUGUST;37import static java.time.Month.SEPTEMBER;38import static java.util.stream.Collectors.toList;39import static org.assertj.core.api.Assertions.assertThat;40import java.time.LocalDate;41import java.util.List;42import org.junit.Test
convertToLocalDateArray
Using AI Code Generation
1LocalDate[] localDates = new LocalDate[] { localDate1, localDate2 };2assertThat(localDates).convertToLocalDateArray().contains(localDate1);3assertThat(localDates).convertToLocalDateArray().contains(localDate1, localDate2);4assertThat(localDates).convertToLocalDateArray().containsOnly(localDate1, localDate2);5assertThat(localDates).convertToLocalDateArray().containsOnlyOnce(localDate1);6assertThat(localDates).convertToLocalDateArray().containsSequence(localDate1, localDate2);7assertThat(localDates).convertToLocalDateArray().containsSubsequence(localDate1, localDate2);8assertThat(localDates).convertToLocalDateArray().containsExactly(localDate1, localDate2);9assertThat(localDates).convertToLocalDateArray().containsExactlyInAnyOrder(localDate1, localDate2);10assertThat(localDates).convertToLocalDateArray().containsExactlyInAnyOrderElementsOf(Arrays.asList(localDate1, localDate2));11assertThat(localDates).convertToLocalDateArray().doesNotContain(localDate3);12assertThat(localDates).convertToLocalDateArray().doesNotContainSequence(localDate3, localDate4);13assertThat(localDates).convertToLocalDateArray().doesNotContainSubsequence(localDate3, localDate4);14assertThat(localDates).convertToLocalDateArray().doesNotHaveDuplicates();15assertThat(localDates).convertToLocalDateArray().doesNotHaveDuplicates();16assertThat(localDates).convertToLocalDateArray().hasSameElementsAs(Arrays.asList(localDate1, localDate2));17assertThat(localDates).convertToLocalDateArray().startsWith(localDate1);18assertThat(localDates).convertToLocalDateArray().endsWith(localDate2);19assertThat(localDates).convertToLocalDateArray().hasSize(2);20assertThat(localDates).convertToLocalDateArray().hasSizeGreaterThan(1);21assertThat(localDates).convertToLocalDateArray().hasSizeGreaterThanOrEqualTo(2);22assertThat(localDates).convertToLocalDateArray().hasSizeLessThan(3);23assertThat(localDates).convertToLocalDateArray().hasSizeLessThanOrEqualTo(2);24assertThat(localDates).convertToLocalDateArray().isNullOrEmpty();25assertThat(localDates).convertToLocalDateArray().isNotEmpty();26assertThat(localDates).convertToLocalDateArray().isSubsetOf(localDate1, localDate2, localDate3);27assertThat(localDates).convertToLocalDateArray().isSubsetOf(Arrays.asList(localDate1,
convertToLocalDateArray
Using AI Code Generation
1assertThat(date).convertToLocalDateArray().containsExactly(2012, 2, 1);2assertThat(date).convertToLocalDateArray().containsExactly(LocalDate.of(2012, 2, 1));3assertThat(date).convertToLocalDateArray().containsExactly(2012, 2, 1, 0, 0, 0);4assertThat(date).convertToLocalDateArray().containsExactly(2012, 2, 1, 0, 0, 0, 0);5assertThat(date).convertToLocalDateArray().containsExactly(2012, 2, 1, 0, 0, 0, 0, ZoneOffset.UTC);6assertThat(date).convertToLocalDateArray().containsExactly(2012, 2, 1, 0, 0, 0, 0, ZoneOffset.UTC, ZoneId.systemDefault());7assertThat(date).convertToLocalDateArray().containsExactly(2012, 2, 1, 0, 0, 0, 0, ZoneOffset.UTC, ZoneId.systemDefault(), Chronology.ofLocale(Locale.getDefault()));8assertThat(date).convertToLocalDateArray().containsExactly(2012, 2, 1, 0, 0, 0, 0, ZoneOffset.UTC, ZoneId.systemDefault(), Chronology.ofLocale(Locale.getDefault()), null);9assertThat(date).convertToLocalDateArray().containsExactly(2012, 2, 1, 0, 0, 0, 0, ZoneOffset.UTC, ZoneId.systemDefault(), Chronology.ofLocale(Locale.getDefault()), null, null);10assertThat(date).convertToLocalDateArray().containsExactly(2012, 2, 1, 0, 0, 0, 0, ZoneOffset.UTC, ZoneId.systemDefault(), Chronology.ofLocale(Locale.getDefault()), null, null, null);11assertThat(date).convertToLocalDateArray().containsExactly(2012, 2, 1, 0, 0, 0, 0, ZoneOffset.UTC, ZoneId.systemDefault(), Chronology.ofLocale(Locale.getDefault()), null, null, null, null);12assertThat(date).convertToLocalDateArray().containsExactly(2012, 2, 1, 0, 0, 0, 0, ZoneOffset.UTC, ZoneId.systemDefault(), Chronology.ofLocale(Locale
convertToLocalDateArray
Using AI Code Generation
1import java.time.LocalDate;2import java.time.Month;3import java.util.Arrays;4import java.util.List;5import org.assertj.core.api.Assertions;6import org.junit.jupiter.api.Test;7public class LocalDateTest {8 public void testConvertToLocalDateArray() {9 LocalDate localDate = LocalDate.of(2020, Month.JANUARY, 1);10 .assertThat(localDate)11 .convertToLocalDateArray()12 .get();13 .stream(localDateArray)14 .boxed()15 .collect(Collectors.toList());16 .assertThat(localDateList)17 .containsExactly(2020, 1, 1);18 .assertThat(localDate)19 .isEqualTo(LocalDate.of(2020, Month.JANUARY, 1));20 }21}
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.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!