use of com.spectralogic.ds3autogen.utils.TestFileUtilsImpl in project ds3_autogen by SpectraLogic.
the class CCodeGenerator_Test method testRequestDocumentationCommentBlock.
@Test
public void testRequestDocumentationCommentBlock() throws IOException, TemplateModelException {
final Request testRequest = RequestConverter.toRequest(Ds3ModelFixtures.getBucketsSpectraS3Request(), getTestGetBucketsDocSpec());
final Map<String, Object> testMap = new HashMap<>();
testMap.put("requestEntry", testRequest);
final CCodeGenerator codeGenerator = new CCodeGenerator();
final TestFileUtilsImpl fileUtils = new TestFileUtilsImpl();
codeGenerator.processTemplate(testMap, "header-templates/RequestCommentDocumentation.ftl", fileUtils.getOutputStream());
final ByteArrayOutputStream bstream = (ByteArrayOutputStream) fileUtils.getOutputStream();
final String output = new String(bstream.toByteArray());
final String expectedOutput = "/**" + "\n" + " * This is how you use get_buckets request" + "\n" + " *\n" + " * Optional Request Modifiers for ds3_init_get_buckets" + "\n" + " *\n" + " * This is how you use data_policy_id" + "\n" + " * void ds3_request_set_data_policy_id(const ds3_request* request, const char * const value)" + "\n" + " * This is how you use last_page" + "\n" + " * void ds3_request_set_last_page(const ds3_request* request, ds3_bool value)" + "\n" + " * This is how you use name" + "\n" + " * void ds3_request_set_name(const ds3_request* request, const char * const value)" + "\n" + " * This is how you use page_length" + "\n" + " * void ds3_request_set_page_length(const ds3_request* request, const int value)" + "\n" + " * This is how you use page_offset" + "\n" + " * void ds3_request_set_page_offset(const ds3_request* request, const int value)" + "\n" + " * This is how you use page_start_marker" + "\n" + " * void ds3_request_set_page_start_marker(const ds3_request* request, const char * const value)" + "\n" + " * This is how you use user_id" + "\n" + " * void ds3_request_set_user_id(const ds3_request* request, const char * const value)" + "\n" + " */" + "\n";
assertEquals(expectedOutput, output);
}
use of com.spectralogic.ds3autogen.utils.TestFileUtilsImpl in project ds3_autogen by SpectraLogic.
the class CCodeGenerator_Test method testFreeStructPrototype.
@Test
public void testFreeStructPrototype() throws IOException, ParseException, TemplateModelException {
final String inputSpecFile = "/input/SimpleTypedefStruct.xml";
final TestFileUtilsImpl fileUtils = new TestFileUtilsImpl();
final Ds3SpecParser parser = new Ds3SpecParserImpl();
final Ds3ApiSpec spec = parser.getSpec(CCodeGenerator_Test.class.getResourceAsStream(inputSpecFile));
final Header header = new Header(CCodeGenerator.getAllEnums(spec), CCodeGenerator.getAllStructs(spec, ImmutableSet.of(), ImmutableSet.of(), ImmutableSet.of(), ImmutableSet.of(), ImmutableSet.of()), CCodeGenerator.getAllRequests(spec, new Ds3DocSpecEmptyImpl()), ImmutableSet.of());
final CCodeGenerator codeGenerator = new CCodeGenerator();
codeGenerator.processTemplate(header, "header-templates/ds3_h.ftl", fileUtils.getOutputStream());
final ByteArrayOutputStream bstream = (ByteArrayOutputStream) fileUtils.getOutputStream();
final String output = new String(bstream.toByteArray());
assertTrue(output.contains("void ds3_bucket_response_free(ds3_bucket_response* response_data);"));
}
use of com.spectralogic.ds3autogen.utils.TestFileUtilsImpl in project ds3_autogen by SpectraLogic.
the class CCodeGenerator_Test method testComplexFreeTypedefStructWithEnum.
@Test
public void testComplexFreeTypedefStructWithEnum() throws IOException, ParseException, TemplateModelException {
final String inputSpecFile = "/input/ComplexTypedefStructWithEnum.xml";
final TestFileUtilsImpl fileUtils = new TestFileUtilsImpl();
final Ds3SpecParser parser = new Ds3SpecParserImpl();
final Ds3ApiSpec spec = parser.getSpec(CCodeGenerator_Test.class.getResourceAsStream(inputSpecFile));
final ImmutableList<Request> allRequests = CCodeGenerator.getAllRequests(spec, new Ds3DocSpecEmptyImpl());
final ImmutableList<Enum> allEnums = CCodeGenerator.getAllEnums(spec);
final ImmutableSet<String> enumNames = EnumHelper.getEnumNamesSet(allEnums);
final ImmutableSet<String> arrayMemberTypes = CCodeGenerator.getArrayMemberTypes(spec, enumNames);
final ImmutableSet<String> responseTypes = RequestHelper.getResponseTypes(allRequests);
final ImmutableList<Struct> allStructs = CCodeGenerator.getAllStructs(spec, enumNames, responseTypes, arrayMemberTypes, ImmutableSet.of(), ImmutableSet.of());
final ImmutableList<Struct> allOrderedStructs = StructHelper.getStructsOrderedList(allStructs, enumNames);
final Source source = SourceConverter.toSource(allEnums, allOrderedStructs, CCodeGenerator.getAllRequests(spec, new Ds3DocSpecEmptyImpl()));
final CCodeGenerator codeGenerator = new CCodeGenerator();
codeGenerator.processTemplate(source, "source-templates/ds3_c.ftl", fileUtils.getOutputStream());
final ByteArrayOutputStream bstream = (ByteArrayOutputStream) fileUtils.getOutputStream();
final String output = new String(bstream.toByteArray());
assertTrue(output.contains("void ds3_blob_response_free(ds3_blob_response* response) {"));
assertTrue(output.contains(" if (response == NULL) {"));
assertTrue(output.contains(" return;"));
assertTrue(output.contains(" }"));
assertTrue(output.contains(" ds3_str_free(response->checksum);"));
assertTrue(output.contains(" ds3_str_free(response->id);"));
assertTrue(output.contains(" ds3_str_free(response->object_id);"));
assertTrue(output.contains(" g_free(response);"));
assertTrue(output.contains("}"));
}
use of com.spectralogic.ds3autogen.utils.TestFileUtilsImpl in project ds3_autogen by SpectraLogic.
the class CCodeGenerator_Test method testComplexFreeTypedefStruct.
@Test
public void testComplexFreeTypedefStruct() throws IOException, ParseException, TemplateModelException {
final String inputSpecFile = "/input/ComplexTypedefStruct.xml";
final TestFileUtilsImpl fileUtils = new TestFileUtilsImpl();
final Ds3SpecParser parser = new Ds3SpecParserImpl();
final Ds3ApiSpec spec = parser.getSpec(CCodeGenerator_Test.class.getResourceAsStream(inputSpecFile));
final ImmutableList<Request> allRequests = CCodeGenerator.getAllRequests(spec, new Ds3DocSpecEmptyImpl());
final ImmutableList<Enum> allEnums = CCodeGenerator.getAllEnums(spec);
final ImmutableSet<String> enumNames = EnumHelper.getEnumNamesSet(allEnums);
final ImmutableSet<String> arrayMemberTypes = CCodeGenerator.getArrayMemberTypes(spec, enumNames);
final ImmutableSet<String> responseTypes = RequestHelper.getResponseTypes(allRequests);
final ImmutableList<Struct> allStructs = CCodeGenerator.getAllStructs(spec, enumNames, responseTypes, arrayMemberTypes, ImmutableSet.of(), ImmutableSet.of());
final ImmutableList<Struct> allOrderedStructs = StructHelper.getStructsOrderedList(allStructs, enumNames);
final Source source = SourceConverter.toSource(allEnums, allOrderedStructs, allRequests);
final CCodeGenerator codeGenerator = new CCodeGenerator();
codeGenerator.processTemplate(source, "source-templates/ds3_c.ftl", fileUtils.getOutputStream());
final ByteArrayOutputStream bstream = (ByteArrayOutputStream) fileUtils.getOutputStream();
final String output = new String(bstream.toByteArray());
assertTrue(output.contains("void ds3_list_all_my_buckets_result_response_free(ds3_list_all_my_buckets_result_response* response) {"));
assertTrue(output.contains(" if (response == NULL) {"));
assertTrue(output.contains(" return;"));
assertTrue(output.contains(" }"));
assertTrue(output.contains(" for (index = 0; index < response->num_buckets; index++) {"));
assertTrue(output.contains(" ds3_bucket_details_response_free(response->buckets[index]);"));
assertTrue(output.contains(" }"));
assertTrue(output.contains(" g_free(response->buckets);"));
assertTrue(output.contains(" ds3_user_response_free(response->owner);"));
assertTrue(output.contains(" g_free(response);"));
assertTrue(output.contains("}"));
}
use of com.spectralogic.ds3autogen.utils.TestFileUtilsImpl in project ds3_autogen by SpectraLogic.
the class CCodeGenerator_Test method testGenerateSingleTypeEnumConstantMatcher.
@Test
public void testGenerateSingleTypeEnumConstantMatcher() throws IOException, TemplateModelException {
final TestFileUtilsImpl fileUtils = new TestFileUtilsImpl();
final Map<String, Object> testMap = new HashMap<>();
final Ds3EnumConstant inProgress = new Ds3EnumConstant("IN_PROGRESS", null);
final Ds3EnumConstant completed = new Ds3EnumConstant("COMPLETED", null);
final Ds3EnumConstant canceled = new Ds3EnumConstant("CANCELED", null);
final ImmutableList<Ds3EnumConstant> enumConstants = ImmutableList.of(inProgress, completed, canceled);
final Enum enumEntry = EnumConverter.toEnum(new Ds3Type("JobStatus", null, null, enumConstants));
testMap.put("enumEntry", enumEntry);
final CCodeGenerator codeGenerator = new CCodeGenerator();
codeGenerator.processTemplate(testMap, "source-templates/TypedefEnumMatcher.ftl", fileUtils.getOutputStream());
final ByteArrayOutputStream bstream = (ByteArrayOutputStream) fileUtils.getOutputStream();
final String output = new String(bstream.toByteArray());
final String expectedOutput = "static ds3_job_status _match_ds3_job_status(const ds3_log* log, const xmlChar* text) {" + "\n" + " if (xmlStrcmp(text, (const xmlChar*) \"IN_PROGRESS\") == 0) {" + "\n" + " return DS3_JOB_STATUS_IN_PROGRESS;" + "\n" + " } else if (xmlStrcmp(text, (const xmlChar*) \"COMPLETED\") == 0) {" + "\n" + " return DS3_JOB_STATUS_COMPLETED;" + "\n" + " } else if (xmlStrcmp(text, (const xmlChar*) \"CANCELED\") == 0) {" + "\n" + " return DS3_JOB_STATUS_CANCELED;" + "\n" + " } else {" + "\n" + " ds3_log_message(log, DS3_ERROR, \"ERROR: Unknown value of '%s'. Returning DS3_JOB_STATUS_IN_PROGRESS for safety.\", text);" + "\n" + " return DS3_JOB_STATUS_IN_PROGRESS;" + "\n" + " }" + "\n" + "}" + "\n";
assertThat(expectedOutput, is(output));
}
Aggregations