/*
Copyright (c) 2019 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved.
*/
/*--------------------------------------------------------------------*\
Pro/TOOLKIT includes
\*--------------------------------------------------------------------*/
#include <ProToolkit.h>
#include <ProMenu.h>
#include <ProUtil.h>
#include <ProMessage.h>
#include <ProMdl.h>
#include <ProArray.h>
/*--------------------------------------------------------------------*\
Application includes
\*--------------------------------------------------------------------*/
#include "TestError.h"
#include "TestConfig.h"
#include "UtilMessage.h"
#include "PTApplsUnicodeUtils.h"
/*--------------------------------------------------------------------*\
Macros
\*--------------------------------------------------------------------*/
#define OPT_NUM 15
#define MODE_NUM 21
/*--------------------------------------------------------------------*\
Application global/external data
\*--------------------------------------------------------------------*/
char* config_options[OPT_NUM] =
{
"AXIS_DISPLAY",
"BELL",
"COLOR",
"DATUM_DISPLAY",
"DATUM_POINT_DISPLAY",
"DATUM_POINT_TAG_DISPLAY",
"DISPLAY_COORDINATE_SYS",
"GRID_SNAP",
"IGES_OUT_TRIM_CURVE_DEVIATION",
"ORTHOGONAL_SNAP",
"REGEN_BACKUP_USE_DISK",
"SAVE_DISPLAY",
"SEARCH_PATH",
"SPIN_CENTER_DISPLAY",
"TOL_DISPLAY"
};
char* mode_names[MODE_NUM] =
{
"PRO_MODE_SKETCHER",
"PRO_MODE_PART",
"PRO_MODE_SHEET_METAL",
"PRO_MODE_COMPOSITE",
"PRO_MODE_SCAN_MODEL",
"PRO_MODE_ASSEMBLY",
"PRO_MODE_DRAWING",
"PRO_MODE_MANUFACTURE",
"PRO_MODE_MOLD",
"PRO_MODE_CAST",
"PRO_MODE_DIEFACE",
"PRO_MODE_LAYOUT",
"PRO_MODE_FORMAT",
"PRO_MODE_REPORT",
"PRO_MODE_MARKUP",
"PRO_MODE_DIAGRAM",
"PRO_MODE_INTERCHANGE",
"PRO_MODE_LEGACY",
"PRO_MODE_USER_DEFINED",
"PRO_MODE_VERIFY",
"PRO_MODE_PROCESS"
};
int ProTestConfig( void* p_dummy, int int_dummy )
{
ProError status;
int menu_id; /* The identifier of the created menu */
int action;
/* Load menu from file */
status = ProMenuFileRegister( (char*)"TkConfig", (char*)"tkconfig.mnu", &menu_id );
TEST_CALL_REPORT( "ProMenuFileRegister()", "ProTestConfig()",
status, status != PRO_TK_NO_ERROR );
/* Define menu buttons */
ProMenubuttonActionSet( (char*)"TkConfig", (char*)"Get Opt",
(ProMenubuttonAction)ProTestGetOption, NULL, 0 );
ProMenubuttonActionSet( (char*)"TkConfig", (char*)"Set Opt",
(ProMenubuttonAction)ProTestConfigOptionSetMenu, NULL, 0 );
ProMenubuttonActionSet( (char*)"TkConfig", (char*)"Get Opt By Name",
(ProMenubuttonAction)ProTestGetOptionByName, NULL, 0 );
ProMenubuttonActionSet( (char*)"TkConfig", (char*)"Set Opt By Name",
(ProMenubuttonAction)ProTestSetOptionByName, NULL, 0 );
ProMenubuttonActionSet( (char*)"TkConfig", (char*)"Edit Cfg File",
(ProMenubuttonAction)ProTestFileEdit, NULL, 0 );
ProMenubuttonActionSet( (char*)"TkConfig", (char*)"Verify Opt",
(ProMenubuttonAction)ProTestOptionOrderedVerify, NULL, 0 );
ProMenubuttonActionSet( (char*)"TkConfig", (char*)"Current Mode",
(ProMenubuttonAction)ProTestMode, NULL, 0 );
ProMenubuttonActionSet( (char*)"TkConfig", (char*)"Done",
(ProMenubuttonAction)ProMenuDelete, NULL, 0 );
ProMenubuttonActionSet( (char*)"TkConfig", (char*)"TkConfig",
(ProMenubuttonAction)ProMenuDelete, NULL, 0 );
/* Rubn MEnu */
status = ProMenuCreate( PROMENUTYPE_MAIN, (char*)"TkConfig", &menu_id );
TEST_CALL_REPORT( "ProMenuCreate()", "ProTestConfig()",
status, status != PRO_TK_NO_ERROR );
if( status == PRO_TK_NO_ERROR )
{
status = ProMenuProcess( (char*)"TkConfig", &action );
TEST_CALL_REPORT( "ProMenuProcess()", "ProTestConfig()",
status, status != PRO_TK_NO_ERROR );
}
return 0;
}
/*=====================================================================*\
FUNCTION: ProTestGetOption
PURPOSE: Get a list of config option values
NOTE: Legacy function - maintained for existing tests only -
use ProTestGetOptionByName() instead
\*=====================================================================*/
int ProTestGetOption( void* p_dummy, int int_dummy )
{
ProError status;
FILE* f;
ProName w_congig_option;
ProLine w_option_value;
char option_value[ 80 ];
char filename[] = "pttestcfgopt.inf";
wchar_t w_filename[ PRO_PATH_SIZE ];
int i;
ProInfoWindowLocation win_location = { 0.0, 0.0 };
ProInfoWindowSize win_size = { 25, 80 };
if( (f = PTApplsUnicodeFopen( filename, "wt" )) == NULL )
return -1;
for( i=0; i<OPT_NUM; i++ )
{
ProStringToWstring( w_congig_option, config_options[i] );
status = ProConfigoptGet( w_congig_option, w_option_value );
TEST_CALL_REPORT( "ProConfigoptGet()", "ProTestGetOption()",
status, status != PRO_TK_NO_ERROR &&
status != PRO_TK_E_NOT_FOUND);
ProWstringToString( option_value, w_option_value );
if( status == PRO_TK_NO_ERROR )
{
ProTKFprintf( f, "%s = %s\n", config_options[i], option_value );
}
}
fclose( f );
status = ProInfoWindowDisplay( ProStringToWstring(w_filename, filename),
&win_location, &win_size );
TEST_CALL_REPORT( "ProInfoWindowDisplay()", "ProTestGetOption()",
status, status != PRO_TK_NO_ERROR);
return 0;
}
int ProTestGetOptionByName ( void* p_dummy, int int_dummy )
{
ProError status;
FILE* f;
ProName w_config_option;
char config_option [PRO_NAME_SIZE];
ProPath* w_option_values;
char option_value[PRO_PATH_SIZE];
char filename[] = "pttestcfgopt.inf";
wchar_t w_filename[ PRO_PATH_SIZE ];
int i, arr_size;
ProInfoWindowLocation win_location = { 0.0, 0.0 };
ProInfoWindowSize win_size = { 25, 80 };
if( (f = PTApplsUnicodeFopen( filename, "wt" )) == NULL )
return -1;
ProUtilMsgPrint( "gen", "TEST %0s", "Enter option name: " );
if( !ProUtilStringGet( w_config_option, NULL, PRO_NAME_SIZE ) )
return -1;
status = ProConfigoptArrayGet( w_config_option, &w_option_values );
TEST_CALL_REPORT( "ProConfigoptArrayGet()", "ProTestGetOption()",
status, status != PRO_TK_NO_ERROR &&
status != PRO_TK_E_NOT_FOUND);
if (status == PRO_TK_E_NOT_FOUND)
{
ProTKFprintf ( f, "Option not found.\n");
}
if (status == PRO_TK_NO_ERROR)
{
ProWstringToString (config_option, w_config_option);
status = ProArraySizeGet (w_option_values, &arr_size);
for (i = 0; i < arr_size; i ++)
{
ProWstringToString (option_value, w_option_values [i]);
if (i == 0)
{
ProTKFprintf( f, "%s\n", config_option);
ProTKFprintf( f, "\t = %s\n", option_value);
}
else
ProTKFprintf( f, "\t = %s\n", option_value );
}
}
fclose( f );
status = ProInfoWindowDisplay( ProStringToWstring(w_filename, filename),
&win_location, &win_size );
TEST_CALL_REPORT( "ProInfoWindowDisplay()", "ProTestGetOption()",
status, status != PRO_TK_NO_ERROR);
return 0;
}
/*=====================================================================*\
FUNCTION: ProTestConfigOptionSetMenu
PURPOSE: Set one of a list of config option values
NOTE: Legacy function - maintained for existing tests only -
use ProTestSetOptionByName() instead
\*=====================================================================*/
int ProTestConfigOptionSetMenu( void* p_dummy, int int_dummy )
{
ProError status;
int menu_id; /* The identifier of the created menu */
int action;
/* Load menu from file */
status = ProMenuFileRegister( (char*)"Option", (char*)"tkoption.mnu", &menu_id );
TEST_CALL_REPORT( "ProMenuFileRegister()", "ProTestConfigOptionSetMenu()",
status, status != PRO_TK_NO_ERROR );
/* Define menu buttons */
ProMenubuttonActionSet( (char*)"Option", (char*)"AXIS_DISPLAY",
(ProMenubuttonAction)ProTestConfigOptionSet, (char*)"AXIS_DISPLAY", 0 );
ProMenubuttonActionSet( (char*)"Option", (char*)"BELL",
(ProMenubuttonAction)ProTestConfigOptionSet, (char*)"BELL", 0 );
ProMenubuttonActionSet( (char*)"Option", (char*)"COLOR",
(ProMenubuttonAction)ProTestConfigOptionSet, (char*)"COLOR", 0 );
ProMenubuttonActionSet( (char*)"Option", (char*)"DATUM_DISPLAY",
(ProMenubuttonAction)ProTestConfigOptionSet, (char*)"DATUM_DISPLAY", 0 );
ProMenubuttonActionSet( (char*)"Option", (char*)"DATUM_POINT_DISPLAY",
(ProMenubuttonAction)ProTestConfigOptionSet, (char*)"DATUM_POINT_DISPLAY", 0 );
ProMenubuttonActionSet( (char*)"Option", (char*)"DATUM_POINT_TAG_DISPLAY",
(ProMenubuttonAction)ProTestConfigOptionSet, (char*)"DATUM_POINT_TAG_DISPLAY", 0 );
ProMenubuttonActionSet( (char*)"Option", (char*)"DISPLAY_COORDINATE_SYS",
(ProMenubuttonAction)ProTestConfigOptionSet, (char*)"DISPLAY_COORDINATE_SYS", 0 );
ProMenubuttonActionSet( (char*)"Option", (char*)"GRID_SNAP",
(ProMenubuttonAction)ProTestConfigOptionSet, (char*)"GRID_SNAP", 0 );
ProMenubuttonActionSet( (char*)"Option", (char*)"IGES_OUT_TRIM_CURVE_DEVIATION",
(ProMenubuttonAction)ProTestConfigOptionSet, (char*)"IGES_OUT_TRIM_CURVE_DEVIATION", 0 );
ProMenubuttonActionSet( (char*)"Option", (char*)"ORTHOGONAL_SNAP",
(ProMenubuttonAction)ProTestConfigOptionSet, (char*)"ORTHOGONAL_SNAP", 0 );
ProMenubuttonActionSet( (char*)"Option", (char*)"REGEN_BACKUP_USE_DISK",
(ProMenubuttonAction)ProTestConfigOptionSet, (char*)"REGEN_BACKUP_USE_DISK", 0 );
ProMenubuttonActionSet( (char*)"Option", (char*)"SAVE_DISPLAY",
(ProMenubuttonAction)ProTestConfigOptionSet, (char*)"SAVE_DISPLAY", 0 );
ProMenubuttonActionSet( (char*)"Option", (char*)"SEARCH_PATH",
(ProMenubuttonAction)ProTestConfigOptionSet, (char*)"SEARCH_PATH", 0 );
ProMenubuttonActionSet( (char*)"Option", (char*)"SPIN_CENTER_DISPLAY",
(ProMenubuttonAction)ProTestConfigOptionSet, (char*)"SPIN_CENTER_DISPLAY", 0 );
ProMenubuttonActionSet( (char*)"Option", (char*)"TOL_DISPLAY",
(ProMenubuttonAction)ProTestConfigOptionSet, (char*)"TOL_DISPLAY", 0 );
ProMenubuttonActionSet( (char*)"Option", (char*)"Option",
(ProMenubuttonAction)ProMenuDelete, NULL, 0 );
/* Rubn MEnu */
status = ProMenuCreate( PROMENUTYPE_MAIN, (char*)"Option", &menu_id );
TEST_CALL_REPORT( "ProMenuCreate()", "ProTestConfigOptionSetMenu()",
status, status != PRO_TK_NO_ERROR );
if( status == PRO_TK_NO_ERROR )
{
status = ProMenuProcess( (char*)"Option", &action );
TEST_CALL_REPORT( "ProMenuProcess()", "ProTestConfigOptionSetMenu()",
status, status != PRO_TK_NO_ERROR );
}
return 0;
}
int ProTestConfigOptionSet( char* p_option, int int_dummy )
{
ProError status;
ProName w_option;
ProLine w_option_value;
ProUtilMsgPrint( "gen", "TEST %0s", "Enter option value: " );
if( !ProUtilStringGet( w_option_value, NULL, PRO_LINE_SIZE ) )
return -1;
ProStringToWstring( w_option, p_option );
status = ProConfigoptSet( w_option, w_option_value );
TEST_CALL_REPORT( "ProConfigoptSet()", "ProTestConfigOptionSet()",
status, status != PRO_TK_NO_ERROR );
ProUtilMsgPrint( "gen", "TEST %0s",
status == PRO_TK_NO_ERROR ? "Option set successfully" :
"Can't set option" );
ProMessageClear();
TEST_CALL_REPORT( "ProMessageClear()", "ProTestConfigOptionSet()",
PRO_TK_NO_ERROR, 0 );
status = ProMenuDelete();
TEST_CALL_REPORT( "ProMenuDelete()", "ProTestConfigOptionSet()",
status, status != PRO_TK_NO_ERROR );
return 0;
}
int ProTestSetOptionByName( void* p_dummy, int int_dummy )
{
ProError status;
ProName w_option;
ProPath w_option_value;
ProUtilMsgPrint( "gen", "TEST %0s", "Enter option name: " );
if( !ProUtilStringGet( w_option, NULL, PRO_NAME_SIZE ) )
return -1;
ProUtilMsgPrint( "gen", "TEST %0s", "Enter option value: " );
if( !ProUtilStringGet( w_option_value, NULL, PRO_PATH_SIZE ) )
return -1;
status = ProConfigoptSet( w_option, w_option_value );
TEST_CALL_REPORT( "ProConfigoptSet()", "ProTestConfigOptionSet()",
status, status != PRO_TK_NO_ERROR );
ProUtilMsgPrint( "gen", "TEST %0s",
status == PRO_TK_NO_ERROR ? "Option set successfully" :
"Couldn't set option" );
ProMessageClear();
TEST_CALL_REPORT( "ProMessageClear()", "ProTestConfigOptionSet()",
PRO_TK_NO_ERROR, 0 );
return 0;
}
int ProTestFileEdit( void* p_dummy, int int_dummy )
{
ProError status;
char filename[] = "config.pro";
ProPath w_filename;
ProStringToWstring( w_filename, filename );
status = ProFileEdit( w_filename );
TEST_CALL_REPORT( "ProFileEdit()", "ProTestFileEdit()",
status, status != PRO_TK_NO_ERROR &&
status != PRO_TK_NO_CHANGE);
return 0;
}
int ProTestOptionOrderedVerify( void* p_dummy, int int_dummy )
{
ProError status;
ProCharName option;
ProName w_option;
ProBoolean option_exist;
char* str = NULL;
/* Get opt name */
ProUtilMsgPrint( "gen", "TEST %0s", "Enter option name: " );
if( !ProUtilStringGet( w_option, NULL, PRO_NAME_SIZE ) )
return -1;
/* Verify opt */
ProWstringToString( option, w_option );
status = ProOptionOrderedVerify( option, &option_exist );
TEST_CALL_REPORT( "ProOptionOrderedVerify()",
"ProTestOptionOrderedVerify()",
status, status != PRO_TK_NO_ERROR );
/* Display opt status */
if( status != PRO_TK_NO_ERROR )
str = (char *)"Invalid option";
else
{
str = (char *)( (option_exist == PRO_B_TRUE)?
("Option exists"):("Option doesn't exist") );
}
ProUtilMsgPrint( "gen", "TEST %0s", str );
ProMessageClear();
TEST_CALL_REPORT( "ProMessageClear()", "ProTestOptionOrderedVerify()",
PRO_TK_NO_ERROR, 0 );
return 0;
}
int ProTestMode( void* p_dummy, int int_dummy )
{
ProError status;
ProMode mode = PRO_MODE_UNUSED;
status = ProModeCurrentGet( &mode );
TEST_CALL_REPORT( "ProModeCurrentGet()", "ProTestMode()",
status, status != PRO_TK_NO_ERROR && status != PRO_TK_BAD_CONTEXT);
return 0;
}