📄 sahpi_struct_utils_test.c
字号:
/* -*- linux-c -*- * * (C) Copyright IBM Corp. 2004 * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This * file and program are licensed under a BSD style license. See * the Copying file included with the OpenHPI distribution for * full licensing terms. * * Author(s): * Steve Sherman <stevees@us.ibm.com> */#include <stdio.h>#include <string.h>#include <unistd.h>#include <SaHpi.h>#include <oh_utils.h>#define UNDEFINED_MANUFACTURER -1#define BAD_TYPE -1int main(int argc, char **argv) { const char *expected_str; const char *str; SaErrorT expected_err, err; SaHpiTextBufferT buffer, bad_buffer; /************************************ * oh_decode_manufacturerid testcases ************************************/ { /* oh_decode_manufacturerid: SAHPI_MANUFACTURER_ID_UNSPECIFIED testcase */ SaHpiManufacturerIdT mid; expected_str = "UNSPECIFIED Manufacturer"; mid = SAHPI_MANUFACTURER_ID_UNSPECIFIED; err = oh_decode_manufacturerid(mid, &buffer); if (strcmp(expected_str, buffer.Data) || err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received string=%s; Expected string=%s; Error=%d\n", buffer.Data, expected_str, err); return -1; } /* oh_decode_manufacturerid: IBM testcase */ expected_str = "IBM"; mid = 2; err = oh_decode_manufacturerid(mid, &buffer); if (strcmp(expected_str, buffer.Data) || err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received string=%s; Expected string=%s; Error=%d\n", buffer.Data, expected_str, err); return -1; } /* oh_decode_manufacturerid: Undefined manufacturer testcase */ expected_str = "Unknown Manufacturer"; mid = UNDEFINED_MANUFACTURER; err = oh_decode_manufacturerid(mid, &buffer); if (strcmp(expected_str, buffer.Data) || err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received string=%s; Expected string=%s; Error=%d\n", buffer.Data, expected_str, err); return -1; } /* oh_decode_manufacturerid: NULL buffer testcase */ expected_err = SA_ERR_HPI_INVALID_PARAMS; mid = UNDEFINED_MANUFACTURER; err = oh_decode_manufacturerid(mid, 0); if (err != expected_err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d; Expected error=%d\n", err, expected_err); return -1; } } /*********************************************************** * oh_decode_sensorreading/oh_encode_sensorreading testcases ***********************************************************/ { SaHpiSensorDataFormatT format_default, format_test; SaHpiSensorReadingT reading_default, reading_test, encode_reading; memset(&reading_default, 0, sizeof(SaHpiSensorReadingT)); reading_default.IsSupported = SAHPI_TRUE; reading_default.Type = SAHPI_SENSOR_READING_TYPE_INT64; reading_default.Value.SensorInt64 = 20; format_default.IsSupported = SAHPI_TRUE; format_default.ReadingType = SAHPI_SENSOR_READING_TYPE_INT64; format_default.BaseUnits = SAHPI_SU_VOLTS; format_default.ModifierUnits = SAHPI_SU_UNSPECIFIED; format_default.ModifierUse = SAHPI_SMUU_NONE; format_default.Percentage = SAHPI_FALSE; /* oh_decode_sensorreading: NULL buffer testcase */ expected_err = SA_ERR_HPI_INVALID_PARAMS; err = oh_decode_sensorreading(reading_default, format_default, 0); if (err != expected_err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d; Expected error=%d\n", err, expected_err); return -1; } /* oh_decode_sensorreading: IsSupported == FALSE testcase */ expected_err = SA_ERR_HPI_INVALID_CMD; reading_test = reading_default; format_test = format_default; format_test.IsSupported = SAHPI_FALSE; err = oh_decode_sensorreading(reading_test, format_test, &buffer); if (err != expected_err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d; Expected error=%d\n", err, expected_err); return -1; } /* oh_decode_sensorreading: Bad SaHpiSensorModifierUseT testcase */ expected_err = SA_ERR_HPI_INVALID_PARAMS; reading_test = reading_default; format_test = format_default; format_test.ModifierUnits = SAHPI_SU_WEEK; format_test.ModifierUse = BAD_TYPE; err = oh_decode_sensorreading(reading_test, format_test, &buffer); if (err != expected_err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d; Expected error=%d\n", err, expected_err); return -1; } /* oh_decode_sensorreading: Bad SaHpiSensorReadingT testcase */ expected_err = SA_ERR_HPI_INVALID_PARAMS; reading_test = reading_default; reading_test.Type = BAD_TYPE; format_test = format_default; format_test.ReadingType = BAD_TYPE; err = oh_decode_sensorreading(reading_test, format_test, &buffer); if (err != expected_err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d; Expected error=%d\n", err, expected_err); return -1; } /* oh_decode_sensorreading: Reading Types not equal testcase */ expected_err = SA_ERR_HPI_INVALID_DATA; reading_test = reading_default; format_test = format_default; format_test.ReadingType = format_default.ReadingType + 1; err = oh_decode_sensorreading(reading_test, format_test, &buffer); if (err != expected_err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d; Expected error=%d\n", err, expected_err); return -1; } /* oh_decode_sensorreading: SAHPI_SENSOR_READING_TYPE_INT64 testcase */ expected_str = "20 Volts"; reading_test = reading_default; format_test = format_default; err = oh_decode_sensorreading(reading_test, format_test, &buffer); if (err != SA_OK) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d\n", err); return -1; } if (strcmp(expected_str, buffer.Data)) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received string=%s; Expected string=%s\n", buffer.Data, expected_str); return -1; } memset(&encode_reading, 0, sizeof(SaHpiSensorReadingT)); err = oh_encode_sensorreading(&buffer, format_test.ReadingType, &encode_reading); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d\n", err); return -1; } if (memcmp((void *)&encode_reading, (void *)&reading_test, sizeof(SaHpiSensorReadingT))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d\n", err); return -1; } /* oh_decode_sensorreading: SAHPI_SMUU_BASIC_OVER_MODIFIER testcase */ expected_str = "20 Volts / Week"; reading_test = reading_default; format_test = format_default; format_test.ModifierUnits = SAHPI_SU_WEEK; format_test.ModifierUse = SAHPI_SMUU_BASIC_OVER_MODIFIER; err = oh_decode_sensorreading(reading_test, format_test, &buffer); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d\n", err); return -1; } if (strcmp(expected_str, buffer.Data)) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received string=%s; Expected string=%s\n", buffer.Data, expected_str); return -1; } err = oh_encode_sensorreading(&buffer, format_test.ReadingType, &encode_reading); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d\n", err); return -1; } if (memcmp((void *)&encode_reading, (void *)&reading_test, sizeof(SaHpiSensorReadingTypeT))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d\n", err); return -1; } /* oh_decode_sensorreading: SAHPI_SMUU_BASIC_TIMES_MODIFIER testcase */ expected_str = "20 Volts * Week"; reading_test = reading_default; format_test = format_default; format_test.ModifierUnits = SAHPI_SU_WEEK; format_test.ModifierUse = SAHPI_SMUU_BASIC_TIMES_MODIFIER; err = oh_decode_sensorreading(reading_test, format_test, &buffer); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d\n", err); return -1; } if (strcmp(expected_str, buffer.Data)) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received string=%s; Expected string=%s\n", buffer.Data, expected_str); return -1; } err = oh_encode_sensorreading(&buffer, format_test.ReadingType, &encode_reading); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d\n", err); return -1; } if (memcmp((void *)&encode_reading, (void *)&reading_test, sizeof(SaHpiSensorReadingTypeT))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d\n", err); return -1; } /* oh_decode_sensorreading: Percentage testcase */ expected_str = "20%"; reading_test = reading_default; format_test = format_default; format_test.Percentage = SAHPI_TRUE; format_test.ModifierUnits = SAHPI_SU_WEEK; format_test.ModifierUse = SAHPI_SMUU_BASIC_TIMES_MODIFIER; err = oh_decode_sensorreading(reading_test, format_test, &buffer); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d\n", err); return -1; } if (strcmp(expected_str, buffer.Data)) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received string=%s; Expected string=%s\n", buffer.Data, expected_str); return -1; } /* oh_decode_sensorreading: SAHPI_SENSOR_READING_TYPE_UINT64 testcase */ expected_str = "20 Volts"; reading_test = reading_default; reading_test.Type = SAHPI_SENSOR_READING_TYPE_UINT64; reading_test.Value.SensorUint64 = 20; format_test = format_default; format_test.ReadingType = SAHPI_SENSOR_READING_TYPE_UINT64; err = oh_decode_sensorreading(reading_test, format_test, &buffer); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d\n", err); return -1; } if (strcmp(expected_str, buffer.Data)) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received string=%s; Expected string=%s\n", buffer.Data, expected_str); return -1; } err = oh_encode_sensorreading(&buffer, format_test.ReadingType, &encode_reading); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d\n", err); return -1; } if (memcmp((void *)&encode_reading, (void *)&reading_test, sizeof(SaHpiSensorReadingTypeT))) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d\n", err); return -1; } /* oh_decode_sensorreading: SAHPI_SENSOR_READING_TYPE_FLOAT64 testcase */ expected_str = "2.020000e+01 Volts"; reading_test = reading_default; reading_test.Type = SAHPI_SENSOR_READING_TYPE_FLOAT64; reading_test.Value.SensorFloat64 = 20.2; format_test = format_default; format_test.ReadingType = SAHPI_SENSOR_READING_TYPE_FLOAT64; err = oh_decode_sensorreading(reading_test, format_test, &buffer); if (err) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received error=%d\n", err); return -1; } if (strcmp(expected_str, buffer.Data)) { printf(" Error! Testcase failed. Line=%d\n", __LINE__); printf(" Received string=%s; Expected string=%s\n", buffer.Data, expected_str); return -1; } /* oh_decode_sensorreading: SAHPI_SENSOR_READING_TYPE_BUFFER testcase */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -