Search in sources :

Example 81 with NumberEval

use of org.apache.poi.ss.formula.eval.NumberEval in project poi by apache.

the class TestMatch method testHeterogeneous.

public void testHeterogeneous() {
    ValueEval[] values = { new NumberEval(4), BoolEval.FALSE, new NumberEval(5), new StringEval("Albert"), BoolEval.FALSE, BoolEval.TRUE, new NumberEval(10), new StringEval("Charles"), new StringEval("Ed"), new NumberEval(10), new NumberEval(25), BoolEval.TRUE, new StringEval("Ed") };
    AreaEval ae = EvalFactory.createAreaEval("A1:A13", values);
    assertEquals(ErrorEval.NA, invokeMatch(new StringEval("Aaron"), ae, MATCH_LARGEST_LTE));
    confirmInt(5, invokeMatch(BoolEval.FALSE, ae, MATCH_LARGEST_LTE));
    confirmInt(2, invokeMatch(BoolEval.FALSE, ae, MATCH_EXACT));
    confirmInt(3, invokeMatch(new NumberEval(5), ae, MATCH_LARGEST_LTE));
    confirmInt(3, invokeMatch(new NumberEval(5), ae, MATCH_EXACT));
    confirmInt(8, invokeMatch(new StringEval("CHARLES"), ae, MATCH_EXACT));
    //wildcard values
    confirmInt(8, invokeMatch(new StringEval("CHAR*"), ae, MATCH_EXACT));
    confirmInt(8, invokeMatch(new StringEval("*CHARLES"), ae, MATCH_EXACT));
    confirmInt(4, invokeMatch(new StringEval("Ben"), ae, MATCH_LARGEST_LTE));
    confirmInt(13, invokeMatch(new StringEval("ED"), ae, MATCH_LARGEST_LTE));
    confirmInt(13, invokeMatch(new StringEval("ED*"), ae, MATCH_LARGEST_LTE));
    confirmInt(13, invokeMatch(new StringEval("*ED"), ae, MATCH_LARGEST_LTE));
    confirmInt(9, invokeMatch(new StringEval("ED"), ae, MATCH_EXACT));
    confirmInt(9, invokeMatch(new StringEval("ED*"), ae, MATCH_EXACT));
    confirmInt(13, invokeMatch(new StringEval("Hugh"), ae, MATCH_LARGEST_LTE));
    assertEquals(ErrorEval.NA, invokeMatch(new StringEval("Hugh"), ae, MATCH_EXACT));
    confirmInt(11, invokeMatch(new NumberEval(30), ae, MATCH_LARGEST_LTE));
    confirmInt(12, invokeMatch(BoolEval.TRUE, ae, MATCH_LARGEST_LTE));
}
Also used : StringEval(org.apache.poi.ss.formula.eval.StringEval) NumericValueEval(org.apache.poi.ss.formula.eval.NumericValueEval) ValueEval(org.apache.poi.ss.formula.eval.ValueEval) AreaEval(org.apache.poi.ss.formula.eval.AreaEval) NumberEval(org.apache.poi.ss.formula.eval.NumberEval)

Example 82 with NumberEval

use of org.apache.poi.ss.formula.eval.NumberEval in project poi by apache.

the class TestMatch method testMatchArgTypeArea.

/**
	 * Ensures that the match_type argument can be an <tt>AreaEval</tt>.<br/>
	 * Bugzilla 44421
	 */
public void testMatchArgTypeArea() {
    ValueEval[] values = { new NumberEval(4), new NumberEval(5), new NumberEval(10), new NumberEval(10), new NumberEval(25) };
    AreaEval ae = EvalFactory.createAreaEval("A1:A5", values);
    AreaEval matchAE = EvalFactory.createAreaEval("C1:C1", new ValueEval[] { MATCH_LARGEST_LTE });
    try {
        confirmInt(4, invokeMatch(new NumberEval(10), ae, matchAE));
    } catch (RuntimeException e) {
        if (e.getMessage().startsWith("Unexpected match_type type")) {
            // identified bug 44421
            fail(e.getMessage());
        }
        // some other error ??
        throw e;
    }
}
Also used : NumericValueEval(org.apache.poi.ss.formula.eval.NumericValueEval) ValueEval(org.apache.poi.ss.formula.eval.ValueEval) AreaEval(org.apache.poi.ss.formula.eval.AreaEval) NumberEval(org.apache.poi.ss.formula.eval.NumberEval)

Example 83 with NumberEval

use of org.apache.poi.ss.formula.eval.NumberEval in project poi by apache.

the class TestMatch method testReversedNumber.

public void testReversedNumber() {
    ValueEval[] values = { new NumberEval(25), new NumberEval(10), new NumberEval(10), new NumberEval(10), new NumberEval(4) };
    AreaEval ae = EvalFactory.createAreaEval("A1:A5", values);
    confirmInt(2, invokeMatch(new NumberEval(10), ae, MATCH_SMALLEST_GTE));
    confirmInt(2, invokeMatch(new NumberEval(10), ae, MATCH_EXACT));
    confirmInt(4, invokeMatch(new NumberEval(9), ae, MATCH_SMALLEST_GTE));
    confirmInt(1, invokeMatch(new NumberEval(20), ae, MATCH_SMALLEST_GTE));
    confirmInt(5, invokeMatch(new NumberEval(3), ae, MATCH_SMALLEST_GTE));
    assertEquals(ErrorEval.NA, invokeMatch(new NumberEval(20), ae, MATCH_EXACT));
    assertEquals(ErrorEval.NA, invokeMatch(new NumberEval(26), ae, MATCH_SMALLEST_GTE));
}
Also used : NumericValueEval(org.apache.poi.ss.formula.eval.NumericValueEval) ValueEval(org.apache.poi.ss.formula.eval.ValueEval) AreaEval(org.apache.poi.ss.formula.eval.AreaEval) NumberEval(org.apache.poi.ss.formula.eval.NumberEval)

Example 84 with NumberEval

use of org.apache.poi.ss.formula.eval.NumberEval in project poi by apache.

the class TestSumproduct method testOneByOneArea.

/**
	 * For scalar products, the terms may be 1x1 area refs
	 */
public void testOneByOneArea() {
    AreaEval ae = EvalFactory.createAreaEval("A1:A1", new ValueEval[] { new NumberEval(7) });
    ValueEval[] args = { ae, new NumberEval(2) };
    ValueEval result = invokeSumproduct(args);
    confirmDouble(14D, result);
}
Also used : NumericValueEval(org.apache.poi.ss.formula.eval.NumericValueEval) ValueEval(org.apache.poi.ss.formula.eval.ValueEval) AreaEval(org.apache.poi.ss.formula.eval.AreaEval) NumberEval(org.apache.poi.ss.formula.eval.NumberEval)

Example 85 with NumberEval

use of org.apache.poi.ss.formula.eval.NumberEval in project poi by apache.

the class TestText method testTextWithDateFormatSecondArg.

@Test
public void testTextWithDateFormatSecondArg() {
    TimeZone userTZ = LocaleUtil.getUserTimeZone();
    LocaleUtil.setUserTimeZone(TimeZone.getTimeZone("CET"));
    try {
        // Test with Java style M=Month
        ValueEval numArg = new NumberEval(321.321);
        ValueEval formatArg = new StringEval("dd:MM:yyyy hh:mm:ss");
        ValueEval[] args = { numArg, formatArg };
        ValueEval result = TextFunction.TEXT.evaluate(args, -1, (short) -1);
        ValueEval testResult = new StringEval("16:11:1900 07:42:14");
        assertEquals(testResult.toString(), result.toString());
        // Excel also supports "m before h is month"
        formatArg = new StringEval("dd:mm:yyyy hh:mm:ss");
        args[1] = formatArg;
        result = TextFunction.TEXT.evaluate(args, -1, (short) -1);
        testResult = new StringEval("16:11:1900 07:42:14");
        assertEquals(testResult.toString(), result.toString());
        // this line is intended to compute how "November" would look like in the current locale
        // update: now the locale will be (if not set otherwise) always Locale.getDefault() (see LocaleUtil)
        DateFormatSymbols dfs = DateFormatSymbols.getInstance(LocaleUtil.getUserLocale());
        SimpleDateFormat sdf = new SimpleDateFormat("MMMM", dfs);
        sdf.setTimeZone(LocaleUtil.getUserTimeZone());
        String november = sdf.format(LocaleUtil.getLocaleCalendar(2015, 10, 1).getTime());
        // Again with Java style
        formatArg = new StringEval("MMMM dd, yyyy");
        args[1] = formatArg;
        result = TextFunction.TEXT.evaluate(args, -1, (short) -1);
        testResult = new StringEval(november + " 16, 1900");
        assertEquals(testResult.toString(), result.toString());
        // And Excel style
        formatArg = new StringEval("mmmm dd, yyyy");
        args[1] = formatArg;
        result = TextFunction.TEXT.evaluate(args, -1, (short) -1);
        testResult = new StringEval(november + " 16, 1900");
        assertEquals(testResult.toString(), result.toString());
    } finally {
        LocaleUtil.setUserTimeZone(userTZ);
    }
}
Also used : TimeZone(java.util.TimeZone) ValueEval(org.apache.poi.ss.formula.eval.ValueEval) StringEval(org.apache.poi.ss.formula.eval.StringEval) DateFormatSymbols(java.text.DateFormatSymbols) SimpleDateFormat(java.text.SimpleDateFormat) NumberEval(org.apache.poi.ss.formula.eval.NumberEval) Test(org.junit.Test)

Aggregations

NumberEval (org.apache.poi.ss.formula.eval.NumberEval)123 ValueEval (org.apache.poi.ss.formula.eval.ValueEval)101 Test (org.junit.Test)34 StringEval (org.apache.poi.ss.formula.eval.StringEval)29 AreaEval (org.apache.poi.ss.formula.eval.AreaEval)21 EvaluationException (org.apache.poi.ss.formula.eval.EvaluationException)19 Calendar (java.util.Calendar)17 Date (java.util.Date)13 NumericValueEval (org.apache.poi.ss.formula.eval.NumericValueEval)12 ErrorEval (org.apache.poi.ss.formula.eval.ErrorEval)8 I_MatchPredicate (org.apache.poi.ss.formula.functions.CountUtils.I_MatchPredicate)5 RefEval (org.apache.poi.ss.formula.eval.RefEval)4 AssertionFailedError (junit.framework.AssertionFailedError)3 ValueVector (org.apache.poi.ss.formula.functions.LookupUtils.ValueVector)3 HSSFWorkbook (org.apache.poi.hssf.usermodel.HSSFWorkbook)2 BoolEval (org.apache.poi.ss.formula.eval.BoolEval)2 Workbook (org.apache.poi.ss.usermodel.Workbook)2 DateFormatSymbols (java.text.DateFormatSymbols)1 DecimalFormatSymbols (java.text.DecimalFormatSymbols)1 SimpleDateFormat (java.text.SimpleDateFormat)1