Esempio n. 1
0
static bool isOK_convertMasses(void) {
	if (!isOK_convertMassesFromM1M2()) {
		PRINT_ERROR();
		return false;
	}
	if (!isOK_convertMassesEtaM()) {
		PRINT_ERROR();
		return false;
	}
	if (!isOK_convertMassesEtaChirp()) {
		PRINT_ERROR();
		return false;
	}
	massParameters mass, result;
	mass.totalMass = result.totalMass = 100.0;
	mass.eta = result.eta = 0.09;
	result.mass[0] = 90.0;
	result.mass[1] = 10.0;
	result.mu = 9.0;
	result.chirpMass = calcChirpMass(result.totalMass, result.eta);
	m1m2ToRemainingMass(&result);
	SAVE_FUNCTION_CALLER();
	convertMasses(&mass, FROM_ETAM);
	if (!areMassParametersNear(&mass, &result)) {
		PRINT_ERROR();
		return false;
	}
	PRINT_OK();
	return true;
}
Esempio n. 2
0
static bool isOK_generateMass(void) {
	if (!isOK_randomBetween()) {
		return false;
	}
	if (!isOK_isMassBetweenLimits()) {
		return false;
	}
	if (!isOK_convertMasses()) {
		return false;
	}
	massParameters mass, limits[2];
	limits[MIN].mass[0] = 3.0 * (limits[MIN].mass[1] = 3.0);
	limits[MAX].mass[0] = 2.0 * (limits[MAX].mass[1] = 30.0);
	convertMassesFromM1M2(&limits[MIN]);
	convertMassesFromM1M2(&limits[MAX]);
	SAVE_FUNCTION_CALLER();
	generateMass(&mass, limits, GEN_M1M2);
	if (!isMassBetweenLimits(&mass, limits)) {
		generateMass(&mass, limits, GEN_M1M2);
		PRINT_ERROR();
		return false;
	}
	generateMass(&mass, limits, GEN_M1M2);
	PRINT_OK();
	return true;
}
Esempio n. 3
0
static bool isOK_m1m2ToRemainingMass(void) {
	massParameters mass;
	mass.mass[0] = 1.0;
	mass.mass[1] = 2.0;
	SAVE_FUNCTION_CALLER();
	m1m2ToRemainingMass(&mass);
	if (mass.m1_m2 != 0.5) {
		PRINT_ERROR();
		return false;
	}
	if (mass.nu != 0.5) {
		PRINT_ERROR();
		return false;
	}
	mass.mass[0] = 2.0;
	mass.mass[1] = 1.0;
	SAVE_FUNCTION_CALLER();
	m1m2ToRemainingMass(&mass);
	if (mass.m1_m2 != 2.0) {
		PRINT_ERROR();
		return false;
	}
	if (mass.nu != 0.5) {
		PRINT_ERROR();
		return false;
	}
	PRINT_OK();
	return true;
}
Esempio n. 4
0
static bool isOK_setFormat(void) {
	if (!isOK_setOutputFormat()) {
		return false;
	}
	OutputFormat format;
	char separator[] = { '%', 'X' };
	ushort code = 1;
	nameString name = "multiformat";
	ushort precision = 5;
	bool leftJusfified = false;
	ushort width = 12;
	nameString output;
	nameString result[2][2] = { { "% 12.5lg", "% 12.5lg %% % 12.5lg" }, //
		{ "% 12.5lg", "% 12.5lg X % 12.5lg" } };
	for (ushort i = 0; i < 2; i++) {
		setOutputFormat(&format, precision, width, separator[i], leftJusfified, name, code);
		SAVE_FUNCTION_CALLER();
		setFormats(output, 1, &format);
		if (strcmp(result[i][0], output)) {
			PRINT_ERROR();
			return false;
		}
		SAVE_FUNCTION_CALLER();
		setFormats(output, 2, &format);
		if (strcmp(result[i][1], output)) {
			PRINT_ERROR();
			return false;
		}
	}
	PRINT_OK();
	return true;
}
Esempio n. 5
0
static bool isOK_setFormatForOneNumber(void) {
	OutputFormat format;
	nameString result[2] = { "%- 10.5lg", "% 10.5lg" };
	format.leftJustified = true;
	format.precision = 5;
	format.width = 10;
	for (short i = 0; i < 2; i++, neg(&format.leftJustified)) {
		SAVE_FUNCTION_CALLER();
		setFormatForOneNumber(&format);
		if (strcmp(result[i], format.oneNumber)) {
			PRINT_ERROR();
			return false;
		}
	}
	format.leftJustified = false;
	for (short i = 0; i < 2; i++, neg(&format.leftJustified)) {
		SAVE_FUNCTION_CALLER();
		setFormatForOneNumber(&format);
		if (!strcmp(result[i], format.oneNumber)) {
			PRINT_ERROR();
			return false;
		}
	}
	PRINT_OK();
	return true;
}
Esempio n. 6
0
static bool isOK_isMassBetweenLimits(void) {
	double mult = 3.0;
	massParameters mass, limits[2];
	limits[MAX].mass[0] = mult * (limits[MIN].mass[0] = 7.0);
	limits[MAX].mass[1] = mult * (limits[MIN].mass[1] = 3.0);
	limits[MAX].eta = mult * (limits[MIN].eta = 0.1);
	limits[MAX].totalMass = mult * (limits[MIN].totalMass = 5.0);
	limits[MAX].chirpMass = mult * (limits[MIN].chirpMass = 4.0);
	limits[MAX].mu = mult * (limits[MIN].mu = 0.4);
	limits[MAX].nu = mult * (limits[MIN].nu = 0.7);
	limits[MAX].m1_m2 = mult * (limits[MIN].m1_m2 = 1.0);
	for (ushort i = 1; i < mult; i++) {
		mass.mass[0] = limits[MAX].mass[0] / (double) i;
		mass.mass[1] = limits[MAX].mass[1] / (double) i;
		mass.eta = limits[MAX].eta / (double) i;
		mass.totalMass = limits[MAX].totalMass / (double) i;
		mass.chirpMass = limits[MAX].chirpMass / (double) i;
		mass.mu = limits[MAX].mu / (double) i;
		mass.nu = limits[MAX].nu / (double) i;
		mass.m1_m2 = limits[MAX].m1_m2 / (double) i;
		SAVE_FUNCTION_CALLER();
		if (!isMassBetweenLimits(&mass, limits)) {
			PRINT_ERROR();
			return false;
		}
	}
	double multMod = mult + 1.0;
	mass.mass[0] = limits[MAX].mass[0] / multMod;
	mass.mass[1] = limits[MAX].mass[1] / multMod;
	mass.eta = limits[MAX].eta / multMod;
	mass.totalMass = limits[MAX].totalMass / multMod;
	mass.chirpMass = limits[MAX].chirpMass / multMod;
	mass.mu = limits[MAX].mu / multMod;
	mass.nu = limits[MAX].nu / multMod;
	mass.m1_m2 = limits[MAX].m1_m2 / multMod;
	SAVE_FUNCTION_CALLER();
	if (isMassBetweenLimits(&mass, limits)) {
		PRINT_ERROR();
		return false;
	}
	multMod = mult - 1.0;
	mass.mass[0] = limits[MAX].mass[0] * multMod;
	mass.mass[1] = limits[MAX].mass[1] * multMod;
	mass.eta = limits[MAX].eta * multMod;
	mass.totalMass = limits[MAX].totalMass * multMod;
	mass.chirpMass = limits[MAX].chirpMass * multMod;
	mass.mu = limits[MAX].mu * multMod;
	mass.nu = limits[MAX].nu * multMod;
	mass.m1_m2 = limits[MAX].m1_m2 * multMod;
	SAVE_FUNCTION_CALLER();
	if (isMassBetweenLimits(&mass, limits)) {
		PRINT_ERROR();
		return false;
	}
	PRINT_OK();
	return true;
}
Esempio n. 7
0
int
main (int argc, char **argv)
{
    bool b;
    uint32_t ui;
    int32_t i;
    float f;

    char *test01 = "\x00";
    b = knx_parse_bool(test01, 7);
    assert(b == false);
    
    char *test02 = "\x01";
    b = knx_parse_bool(test02, 7);
    assert(b == true);
    b = knx_parse_bool(test02, 6);
    assert(b == false);

    char *test03 = "\x05";
    ui = knx_parse_uint(test03, 5, 3);
    assert(ui == 5);
    ui = knx_parse_uint(test03, 6, 2);
    assert(ui == 1);
    i = knx_parse_int(test03, 5, 3);
    assert(i == -1);
    i = knx_parse_int(test03, 6, 2);
    assert(i == 1);

    char *test03b = "\x12";
    i = knx_parse_int(test03b, 0, 8);
    assert(i == 18);
    
    //  KNX is Big endian
    char *test04 = "\x03\x35";
    ui = knx_parse_uint(test04, 6, 10);
    assert(ui == 821);
    i = knx_parse_int(test04, 6, 10);
    assert(i == -309);

    char *test05 = "\x67\x7e\xf6\x42";
    f = knx_parse_float(test05);
    assert(f == 123.24688f);
    
    // FFS : Add more tests
    
    PRINT_OK();
    return 0;
}
Esempio n. 8
0
static bool isOK_convertMassesFromM1M2(void) {
	if (!isOK_m1m2ToRemainingMass()) {
		return false;
	}
	massParameters mass, result;
	mass.mass[0] = result.mass[0] = 90.0;
	mass.mass[1] = result.mass[1] = 10.0;
	result.totalMass = 100.0;
	result.mu = 9.0;
	result.eta = 0.09;
	result.chirpMass = calcChirpMass(result.totalMass, result.eta);
	m1m2ToRemainingMass(&result);
	SAVE_FUNCTION_CALLER();
	convertMassesFromM1M2(&mass);
	if (memcmp(&mass, &result, sizeof(massParameters))) {
		PRINT_ERROR();
		return false;
	}
	PRINT_OK();
	return true;
}
Esempio n. 9
0
static bool isOK_setOutputFormat(void) {
	if (!isOK_setFormatForOneNumber()) {
		return false;
	}
	OutputFormat format;
	char separator = '%';
	ushort code = 0;
	nameString name[6] = { "ab", "bd", "cf", "dh", "ej", "fl" };
	ushort precision = 2 * SPECIAL_CHARACTER_LENGTH;
	bool leftJusfified = false;
	ushort width;
	for (ushort i = 0; i < 2; i++, neg(&leftJusfified)) {
		width = (ushort) (precision - 2 * SPECIAL_CHARACTER_LENGTH);
		for (ushort j = 0; j < 3; j++, code++) {
			ushort k = (ushort) (3 * i + j);
			SAVE_FUNCTION_CALLER();
			setOutputFormat(&format, precision, width, separator, leftJusfified, name[k], code);
			if (format.precision != precision) {
				PRINT_ERROR();
				return false;
			}
			if (format.width < width) {
				PRINT_ERROR();
				return false;
			}
			if (format.width < precision) {
				PRINT_ERROR();
				return false;
			}
			if (strcmp(name[k], format.name)) {
				PRINT_ERROR();
				return false;
			}
			width = (ushort) (width + 2 * SPECIAL_CHARACTER_LENGTH);
		}
	}
	/// @todo a hibás bemenet nincs leellenőrizve!!!
	PRINT_OK();
	return true;
}
Esempio n. 10
0
int
main (int argc, char **argv)
{
    int i, rc;
    char *str;
    ManufacturerInfos_t maninfos[1];
    DptInfos_t dptinfo[1];
    Dpt_t dpt;
    
    // Init actility stuff
    char tmp[512];
    rootactPath = getenv("ROOTACT");
    if ((!rootactPath || !*rootactPath)) {
        printf("ROOTACT unset, abort\n");
        exit(1);
    }
    VarInit();
    XoInit(0);
    if (!Operating) {
        sprintf(tmp, "%s/%s/xo/.", rootactPath, GetAdaptorName());
        XoLoadNameSpaceDir(tmp);
        XoLoadNameSpaceDir(".");
    } else {
        sprintf(tmp, "%s/etc/xo/.", rootactPath);
        XoLoadNameSpaceDir(tmp);
        sprintf(tmp, "%s/etc/%s/.", rootactPath, GetAdaptorName());
        XoLoadNameSpaceDir(tmp);
    }
    
    if (LoadM2MXoRef() < 0)
        exit(1);

    if (LoadDrvXoRef(GetAdaptorName()) < 0)
        exit(1);

    if(getenv(DRIVER_DATA_DIR) == NULL) {
        printf("Check your environnement varaibles (" DRIVER_DATA_DIR ").\n");
        exit(1);
    }


    /*
     *  Manufacturer 
     */
    rc = ManufacturerLoadDatabase();
    assert(rc == 0);

    rc = ManufacturerGetInfos(3, maninfos);
    assert(rc != 0);

    rc = ManufacturerGetInfos(157, maninfos);
    assert(rc == 0);
    assert(maninfos->id == 157);
    assert(!strcmp(maninfos->name, "EGi Electroacustica General Iberica"));

    rc = ManufacturerGetInfos(250, maninfos);
    assert(rc == 0);
    assert(maninfos->id == 250);
    assert(!strcmp(maninfos->name, "KNX Association"));
    
    /*
     *  DPT 
     */
    rc = DptLoadDatabase();
    assert(rc == 0);

    DPT_SET(dpt, 10000, 23);
    rc = DptGetInfos(dpt, dptinfo);
    assert(rc != 0);
    
    DPT_SET(dpt, 9, 23);
    rc = DptGetInfos(dpt, dptinfo);
    assert(rc == 0);
    assert(dptinfo->dpt.primary == 9);
    assert(dptinfo->dpt.sub == 23);
    assert(dptinfo->bits == 16);
    assert(!strcmp(dptinfo->name, "DPT_KelvinPerPercent"));

    /*
     *  Range (Enum)
     *  Bin to String
     */    
    rc = RangeLoadDatabase();
    assert(rc == 0);
    
    DPT_SET(dpt, 2, 3);
    rc = RangeGetRenderedValue(dpt, 0, &str);
    assert(rc == 0);
    assert(!strcmp(str, "noControl"));

    DPT_SET(dpt, 20, 13);
    rc = RangeGetRenderedValue(dpt, 14, &str);
    assert(rc == 0);
    assert(!strcmp(str, "2,5min"));

    /*
     *  Range (Enum)
     *  String to Bin
     */
    DPT_SET(dpt, 2, 3);
    rc = RangeGetBinValue(dpt, &i, "noControl");
    assert(rc == 0);
    assert(i == 0); 

    DPT_SET(dpt, 20, 13);
    rc = RangeGetBinValue(dpt, &i, "2,5min");
    assert(rc == 0);
    assert(i == 14); 

    PRINT_OK();
    return 0;
}