+
+
+void test_HYDROData_ShapeFile::test_DbfWrite()
+{
+ {
+ HYDROData_ShapeFile aSHPFile;
+ QString tempFN = REF_PATH + "/temp_dbf1.dbf";
+ QString refFN = REF_PATH + "/ref_dbf1.dbf";
+ std::vector<HYDROData_ShapeFile::DBF_AttrValue> theAttrV;
+ HYDROData_ShapeFile::DBF_AttrValue theAttr1;
+ theAttr1.myFieldType = HYDROData_ShapeFile::DBF_FieldType_String;
+ theAttr1.myIsNull = false;
+ theAttr1.myRawValue = "test_value1";
+ theAttr1.myStrVal = "test_value1";
+ theAttrV.push_back(theAttr1);
+ HYDROData_ShapeFile::DBF_AttrValue theAttr2;
+ theAttr2.myFieldType = HYDROData_ShapeFile::DBF_FieldType_String;
+ theAttr2.myIsNull = false;
+ theAttr2.myRawValue = "test_value2";
+ theAttr2.myStrVal = "test_value2";
+ theAttrV.push_back(theAttr2);
+ //
+ CPPUNIT_ASSERT(aSHPFile.DBF_WriteFieldAndValues(tempFN, "test_field_name", HYDROData_ShapeFile::DBF_FieldType_String, theAttrV, true));
+
+ CPPUNIT_ASSERT(compare_two_files(tempFN, refFN));
+ CPPUNIT_ASSERT_EQUAL( 0, remove (tempFN.toStdString().c_str()));
+ }
+
+ {
+ HYDROData_ShapeFile aSHPFile;
+ QString tempFN = REF_PATH + "/temp_dbf2.dbf";
+ QString refFN = REF_PATH + "/ref_dbf2.dbf";
+ std::vector<HYDROData_ShapeFile::DBF_AttrValue> theAttrV;
+ HYDROData_ShapeFile::DBF_AttrValue theAttr1;
+ theAttr1.myFieldType = HYDROData_ShapeFile::DBF_FieldType_String;
+ theAttr1.myIsNull = false;
+ theAttr1.myRawValue = "test_value1";
+ theAttr1.myStrVal = "test_value1";
+ theAttrV.push_back(theAttr1);
+
+ HYDROData_ShapeFile::DBF_AttrValue theAttr2;
+ theAttr2.myIsNull = false;
+ theAttr2.myRawValue = "test_value_K";
+ theAttr2.myStrVal = "test_value_K";
+ theAttr2.myFieldType = HYDROData_ShapeFile::DBF_FieldType_String;
+ for (int ii = 0; ii < 100; ii++)
+ theAttrV.push_back(theAttr2);
+
+ HYDROData_ShapeFile::DBF_AttrValue theAttr3;
+ theAttr3.myIsNull = true;
+ theAttr3.myFieldType = HYDROData_ShapeFile::DBF_FieldType_String;
+ for (int ii = 0; ii < 100; ii++)
+ theAttrV.push_back(theAttr3);
+ //
+ CPPUNIT_ASSERT(aSHPFile.DBF_WriteFieldAndValues(tempFN, "test_field_name", HYDROData_ShapeFile::DBF_FieldType_String, theAttrV, true));
+
+ CPPUNIT_ASSERT(compare_two_files(tempFN, refFN));
+ CPPUNIT_ASSERT_EQUAL( 0, remove (tempFN.toStdString().c_str()));
+ }
+
+ {
+ HYDROData_ShapeFile aSHPFile;
+ QString tempFN = REF_PATH + "/temp_dbf3.dbf";
+ QString refFN = REF_PATH + "/ref_dbf3.dbf";
+ std::vector<HYDROData_ShapeFile::DBF_AttrValue> theAttrV;
+ HYDROData_ShapeFile::DBF_AttrValue theAttr1;
+ theAttr1.myFieldType = HYDROData_ShapeFile::DBF_FieldType_Integer;
+ theAttr1.myIsNull = false;
+
+ for (int ii = 0; ii < 100; ii++)
+ {
+ theAttr1.myIntVal = ii;
+ theAttrV.push_back(theAttr1);
+ }
+
+ //
+ CPPUNIT_ASSERT(aSHPFile.DBF_WriteFieldAndValues(tempFN, "test_field_name", HYDROData_ShapeFile::DBF_FieldType_Integer, theAttrV, false));
+
+ CPPUNIT_ASSERT(compare_two_files(tempFN, refFN));
+ CPPUNIT_ASSERT_EQUAL( 0, remove (tempFN.toStdString().c_str()));
+ }
+
+}
+