f7
f7 is a spreadsheet formula execution library
git clone https://git.vogt.world/f7.git
Log | Files | README.md | LICENSE.md
← All files
name: src/test/java/io/protobase/f7/spreadsheet/GeneralTypeCastingTest.java
-rw-r--r--
6326
  1package io.protobase.f7.spreadsheet;
  2
  3import io.protobase.f7.errors.RefException;
  4import io.protobase.f7.testutils.TestExecution;
  5import org.junit.Test;
  6
  7public class GeneralTypeCastingTest extends TestExecution {
  8  @Test
  9  public void test_StringToNumber_Integer() {
 10    runner().addCell("Alpha", "A1", "= \"0\" * 1").addExpectedValue("Alpha", "A1", 0.0).run();
 11    runner().addCell("Alpha", "A1", "= \"1\" * 1").addExpectedValue("Alpha", "A1", 1.0).run();
 12    runner().addCell("Alpha", "A1", "= \"2738281\" * 1").addExpectedValue("Alpha", "A1", 2738281.0).run();
 13    runner().addCell("Alpha", "A1", "= \"0001776\" * 1").addExpectedValue("Alpha", "A1", 1776.0).run();
 14  }
 15
 16  @Test
 17  public void test_StringToNumber_Decimal() {
 18    runner().addCell("Alpha", "A1", "= \"0.0\" * 1").addExpectedValue("Alpha", "A1", 0.0).run();
 19    runner().addCell("Alpha", "A1", "= \"0.187328\" * 1").addExpectedValue("Alpha", "A1", 0.187328).run();
 20    runner().addCell("Alpha", "A1", "= \"38133.09128901\" * 1").addExpectedValue("Alpha", "A1", 38133.09128901).run();
 21    runner().addCell("Alpha", "A1", "= \"4.00000000000001\" * 1").addExpectedValue("Alpha", "A1", 4.00000000000001).run();
 22    runner().addCell("Alpha", "A1", "= \"33.0000000000000\" * 1").addExpectedValue("Alpha", "A1", 33.0).run();
 23  }
 24
 25  @Test
 26  public void test_StringToNumber_InferredPositiveScientificNotation() {
 27    runner().addCell("Alpha", "A1", "= \"12387e0\" * 1").addExpectedValue("Alpha", "A1", 12387.0).run();
 28    runner().addCell("Alpha", "A1", "= \"12387e1\" * 1").addExpectedValue("Alpha", "A1", 123870.0).run();
 29    runner().addCell("Alpha", "A1", "= \"1.0e4\" * 1").addExpectedValue("Alpha", "A1", 10000.0).run();
 30    runner().addCell("Alpha", "A1", "= \"0.0009e4\" * 1").addExpectedValue("Alpha", "A1", 9.0).run();
 31  }
 32
 33  @Test
 34  public void test_StringToNumber_PositiveScientificNotation() {
 35    runner().addCell("Alpha", "A1", "= \"12387e+0\" * 1").addExpectedValue("Alpha", "A1", 12387.0).run();
 36    runner().addCell("Alpha", "A1", "= \"12387e+1\" * 1").addExpectedValue("Alpha", "A1", 123870.0).run();
 37    runner().addCell("Alpha", "A1", "= \"1.0e+4\" * 1").addExpectedValue("Alpha", "A1", 10000.0).run();
 38    runner().addCell("Alpha", "A1", "= \"0.0009e+4\" * 1").addExpectedValue("Alpha", "A1", 9.0).run();
 39  }
 40
 41  @Test
 42  public void test_StringToNumber_NegativeScientificNotation() {
 43    runner().addCell("Alpha", "A1", "= \"12387e-0\" * 1").addExpectedValue("Alpha", "A1", 12387e-0).run();
 44    runner().addCell("Alpha", "A1", "= \"12387e-1\" * 1").addExpectedValue("Alpha", "A1", 12387e-1).run();
 45    runner().addCell("Alpha", "A1", "= \"1.0e-4\" * 1").addExpectedValue("Alpha", "A1", 1.0e-4).run();
 46    runner().addCell("Alpha", "A1", "= \"0.0009e-4\" * 1").addExpectedValue("Alpha", "A1", 0.0009e-4).run();
 47  }
 48
 49  @Test
 50  public void test_BooleanToNumber() {
 51    runner().addCell("Alpha", "A1", "= FALSE * 1").addExpectedValue("Alpha", "A1", 0.0).run();
 52    runner().addCell("Alpha", "A1", "= TRUE * 1").addExpectedValue("Alpha", "A1", 1.0).run();
 53  }
 54
 55  @Test
 56  public void test_NumberToString_Integer() {
 57    runner().addCell("Alpha", "A1", "= 0 & \"\"").addExpectedValue("Alpha", "A1", "0").run();
 58    runner().addCell("Alpha", "A1", "= 1 & \"\"").addExpectedValue("Alpha", "A1", "1").run();
 59    runner().addCell("Alpha", "A1", "= 2738281 & \"\"").addExpectedValue("Alpha", "A1", "2738281").run();
 60    runner().addCell("Alpha", "A1", "= 0001776 & \"\"").addExpectedValue("Alpha", "A1", "1776").run();
 61  }
 62
 63  @Test
 64  public void test_NumberToString_Decimal() {
 65    runner().addCell("Alpha", "A1", "= 0.0 & \"\"").addExpectedValue("Alpha", "A1", "0").run();
 66    runner().addCell("Alpha", "A1", "= 0.187328 & \"\"").addExpectedValue("Alpha", "A1", "0.187328").run();
 67    runner().addCell("Alpha", "A1", "= 38133.09128901 & \"\"").addExpectedValue("Alpha", "A1", "38133.09128901").run();
 68    runner().addCell("Alpha", "A1", "= 4.00000000000001 & \"\"").addExpectedValue("Alpha", "A1", "4.00000000000001").run();
 69    runner().addCell("Alpha", "A1", "= 33.0000000000000 & \"\"").addExpectedValue("Alpha", "A1", "33").run();
 70  }
 71
 72  @Test
 73  public void test_NumberToString_PositiveScientificNotation() {
 74    runner().addCell("Alpha", "A1", "= 12387183718789125223e0 & \"\"").addExpectedValue("Alpha", "A1", "12387183718789126000").run();
 75    runner().addCell("Alpha", "A1", "= 31287e42 & \"\"")
 76        .addExpectedValue("Alpha", "A1", "31287000000000000000000000000000000000000000000").run();
 77    runner().addCell("Alpha", "A1", "= 1.0e4 & \"\"").addExpectedValue("Alpha", "A1", "10000").run();
 78    runner().addCell("Alpha", "A1", "= 0.0009e4 & \"\"").addExpectedValue("Alpha", "A1", "9").run();
 79  }
 80
 81  @Test
 82  public void test_NumberToBoolean_False() {
 83    runner().addCell("Alpha", "A1", "= IF(0, TRUE, FALSE)").addExpectedValue("Alpha", "A1", false).run();
 84  }
 85
 86  @Test
 87  public void test_NumberToBoolean_True() {
 88    runner().addCell("Alpha", "A1", "= IF(0.00001, TRUE, FALSE)").addExpectedValue("Alpha", "A1", true).run();
 89    runner().addCell("Alpha", "A1", "= IF(1, TRUE, FALSE)").addExpectedValue("Alpha", "A1", true).run();
 90    runner().addCell("Alpha", "A1", "= IF(2, TRUE, FALSE)").addExpectedValue("Alpha", "A1", true).run();
 91    runner().addCell("Alpha", "A1", "= IF(-823178, TRUE, FALSE)").addExpectedValue("Alpha", "A1", true).run();
 92    runner().addCell("Alpha", "A1", "= IF(31287e42, TRUE, FALSE)").addExpectedValue("Alpha", "A1", true).run();
 93  }
 94
 95  @Test
 96  public void test_ListToNumber() {
 97    runner().addCell("Alpha", "A1", "= {2, 4, 8} * 1").addExpectedValue("Alpha", "A1", 2.0).run();
 98    runner().addCell("Alpha", "A1", "= {2, \"Nope.\"} * 1").addExpectedValue("Alpha", "A1", 2.0).run();
 99    runner().addCell("Alpha", "A1", "= {} * 1").addExpectedValue("Alpha", "A1", new RefException()).run();
100  }
101
102  @Test
103  public void test_ListToBoolean() {
104    runner().addCell("Alpha", "A1", "= IF({2, 4, 8}, TRUE, FALSE)").addExpectedValue("Alpha", "A1", true).run();
105    runner().addCell("Alpha", "A1", "= IF({2, \"Nope.\"}, TRUE, FALSE)").addExpectedValue("Alpha", "A1", true).run();
106    runner().addCell("Alpha", "A1", "= IF({TRUE, \"Nope.\"}, TRUE, FALSE)").addExpectedValue("Alpha", "A1", true).run();
107    runner().addCell("Alpha", "A1", "= IF({}, TRUE, FALSE)").addExpectedValue("Alpha", "A1", new RefException()).run();
108  }
109}