blob: 22dd487febce59dbe705b53edafa041a0a1fb9ca [file] [log] [blame]
/* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define CFC_USE_TEST_MACROS
#include "CFCBase.h"
#include "CFCFunction.h"
#include "CFCParamList.h"
#include "CFCParcel.h"
#include "CFCParser.h"
#include "CFCTest.h"
#include "CFCType.h"
static void
S_run_tests(CFCTest *test);
const CFCTestBatch CFCTEST_BATCH_FUNCTION = {
"Clownfish::CFC::Model::Function",
11,
S_run_tests
};
static void
S_run_tests(CFCTest *test) {
CFCParser *parser = CFCParser_new();
CFCParcel *neato_parcel
= CFCTest_parse_parcel(test, parser, "parcel Neato;");
{
CFCType *return_type = CFCTest_parse_type(test, parser, "Obj*");
CFCParamList *param_list
= CFCTest_parse_param_list(test, parser, "(int32_t some_num)");
CFCFunction *func = CFCFunction_new(NULL, "return_an_obj", return_type,
param_list, NULL, 0);
OK(test, func != NULL, "new");
CFCBase_decref((CFCBase*)return_type);
CFCBase_decref((CFCBase*)param_list);
CFCBase_decref((CFCBase*)func);
}
{
CFCParser_set_class_name(parser, "Neato::Obj");
static const char *func_strings[2] = {
"inert int running_count(int biscuit);",
"public inert Hash* init_fave_hash(int32_t num_buckets,"
" bool o_rly);"
};
for (int i = 0; i < 2; ++i) {
CFCFunction *func
= CFCTest_parse_function(test, parser, func_strings[i]);
CFCBase_decref((CFCBase*)func);
}
}
CFCBase_decref((CFCBase*)neato_parcel);
CFCBase_decref((CFCBase*)parser);
CFCParcel_reap_singletons();
}