TEST_F(UnitsFixture,QuantityRegex_Quantities) {

  // quantity
  std::string aQuantity("3 m");
  EXPECT_TRUE(isQuantity(aQuantity));
  aQuantity = ".1E-4 kJ*m/s"; EXPECT_TRUE(isQuantity(aQuantity));
  aQuantity = "0.321 \\mu(ft^{-2}/ms*PJ)"; EXPECT_TRUE(isQuantity(aQuantity));
  aQuantity = "19856D19867 kN/short"; EXPECT_TRUE(isQuantity(aQuantity));
  aQuantity = "141.21 kBtu/ft^2*yr"; EXPECT_TRUE(isQuantity(aQuantity));
  aQuantity = "1.1 MJ/s"; EXPECT_TRUE(isQuantity(aQuantity));
  aQuantity = "61 M(J)"; EXPECT_TRUE(isQuantity(aQuantity));

  // not a quantity
  std::string notAQuantity("3 m^^2");
  EXPECT_FALSE(isQuantity(notAQuantity));
  notAQuantity = "300. ft"; EXPECT_FALSE(isQuantity(notAQuantity));
  notAQuantity = "21E-2 ft^21/s)"; EXPECT_FALSE(isQuantity(notAQuantity));
  notAQuantity = " 300 m"; EXPECT_FALSE(isQuantity(notAQuantity));
  notAQuantity = "2 ft "; EXPECT_FALSE(isQuantity(notAQuantity));
  notAQuantity = "k300/s"; EXPECT_FALSE(isQuantity(notAQuantity));
  notAQuantity = "text only"; EXPECT_FALSE(isQuantity(notAQuantity));

  // contains a quantity
  std::string includesQuantity("The building has a floor area of 3000 ft^2.");
  EXPECT_TRUE(containsQuantity(includesQuantity));
  includesQuantity = "2.0E-4 kN"; EXPECT_TRUE(containsQuantity(includesQuantity));
  includesQuantity = "     91.38967D-002 bats/s; "; EXPECT_TRUE(containsQuantity(includesQuantity));
  includesQuantity = "A 2 var model is parsimonious."; EXPECT_TRUE(containsQuantity(includesQuantity));
  includesQuantity = "Down to 31 bottles of beer on the wall."; EXPECT_TRUE(containsQuantity(includesQuantity));
  includesQuantity = "Energy use: 250 kWh/yr"; EXPECT_TRUE(containsQuantity(includesQuantity));

  // does not contain a quantity
  std::string noQuantityHere("The building has a floor area of 3,000 ft^2.");
  EXPECT_FALSE(containsQuantity(noQuantityHere));
  noQuantityHere = "just text"; EXPECT_FALSE(containsQuantity(noQuantityHere));
  noQuantityHere = "kJ/s"; EXPECT_FALSE(containsQuantity(noQuantityHere));
  noQuantityHere = "32~0 kJ/"; EXPECT_FALSE(containsQuantity(noQuantityHere));
  noQuantityHere = "3 m+"; EXPECT_FALSE(containsQuantity(noQuantityHere));
}