/*
Copyright (c) 2019 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved.
*/
/*--------------------------------------------------------------------*\
Pro/TOOLKIT includes
\*--------------------------------------------------------------------*/
#include <ProToolkit.h>
#include <ProArray.h>
#include <ProMdl.h>
#include <ProDrawing.h>
#include <ProMenu.h>
#include <ProUtil.h>
#include <ProDtlgroup.h>
/*--------------------------------------------------------------------*\
Application includes
\*--------------------------------------------------------------------*/
#include "TestError.h"
#include "UtilMessage.h"
#include "UtilMenu.h"
#include <ProTKRunTime.h>
#include <PTApplsUnicodeUtils.h>
#define GRP_EDIT_ADD 1
#define GRP_EDIT_REMOVE 2
/*---------------------------------------------------------------------*\
Functions declaration
\*---------------------------------------------------------------------*/
int ProTestDtlGroupCreate (void*, int);
int ProTestDtlGroupSuppress (void*, int);
int ProTestDtlGroupResume (void*, int);
int ProTestDtlGroupExplode (void*, int);
int ProTestDtlGroupEditMenu (void*, int);
int ProTestDtlGroupEdit (void*, int);
int ProTestDtlGroupList (void*, int);
int ProTestDtlGroupSelect (ProDrawing, ProDtlgroup*);
int ProTestDtlGroupSelectMenu (ProDrawing, ProDtlgroup*);
int ProTestDtlGroupSelectByName (ProDrawing, ProDtlgroup*);
int ProTestDtlitemsCompare (ProDtlitem*, ProDtlitem*);
/*---------------------------------------------------------------------*\
Function: ProTestDtlGroupMenu()
Purpose: On-button function. Set up the dtl group menu
Returns: 0 - success; -1 - error.
\*---------------------------------------------------------------------*/
int ProTestDtlGroupMenu( ProDrawing drawing )
{
ProError status;
int menu_id; /* The identifier of the created menu */
int action;
/*---------------------------------*\
Create new menu Group
\*---------------------------------*/
/* Load base menu from file */
status = ProMenuFileRegister( (char*)"Group", (char*)"tkdtlgroup.mnu", &menu_id );
TEST_CALL_REPORT( "ProMenuFileRegister()", "ProTestDtlGroupMenu()",
status, status != PRO_TK_NO_ERROR );
/* Define menu buttons */
ProMenubuttonActionSet( (char*)"Group", (char*)"Create",
(ProMenubuttonAction)ProTestDtlGroupCreate, drawing, 0);
ProMenubuttonActionSet( (char*)"Group", (char*)"Suppress",
(ProMenubuttonAction)ProTestDtlGroupSuppress, drawing, 0);
ProMenubuttonActionSet( (char*)"Group", (char*)"Resume",
(ProMenubuttonAction)ProTestDtlGroupResume, drawing, 0);
ProMenubuttonActionSet( (char*)"Group", (char*)"Explode",
(ProMenubuttonAction)ProTestDtlGroupExplode, drawing, 0);
ProMenubuttonActionSet( (char*)"Group", (char*)"Edit",
(ProMenubuttonAction)ProTestDtlGroupEditMenu, drawing, 0 );
ProMenubuttonActionSet( (char*)"Group", (char*)"List",
(ProMenubuttonAction)ProTestDtlGroupList, drawing, 0 );
ProMenubuttonActionSet( (char*)"Group", (char*)"Group",
(ProMenubuttonAction)ProMenuDelete, NULL, 0 );
/*--------------------------*\
Run menu Disp List
\*--------------------------*/
status = ProMenuCreate( PROMENUTYPE_MAIN, (char*)"Group", &menu_id );
TEST_CALL_REPORT( "ProMenuCreate()", "ProTestDtlGroupMenu()",
status, status != PRO_TK_NO_ERROR );
if( status == PRO_TK_NO_ERROR )
{
status = ProMenuProcess( (char*)"Group", &action );
TEST_CALL_REPORT( "ProMenuProcess()", "ProTestDtlGroupMenu()",
status, status != PRO_TK_NO_ERROR && status != PRO_TK_E_FOUND);
}
return 0;
}
/*---------------------------------------------------------------------*\
Function: ProTestDtlGroupSelectMenu()
Purpose: selection menu
Returns: 0 - success; -1 - error or selection canceled
\*---------------------------------------------------------------------*/
int ProTestDtlGroupSelectMenu (
ProDrawing drawing,
ProDtlgroup* p_group)
{
ProError err = PRO_TK_NO_ERROR;
wchar_t **menu_strs;
int action, status;
err = ProUtilMenuStringsAlloc (&menu_strs);
err = ProUtilMenuStringsStrAdd (&menu_strs, (char*)"Select");
err = ProUtilMenuStringsStrAdd (&menu_strs, (char*)"By Name");
err = ProUtilMenuStringsIntValueSelect ((char*)"SelectGroup", menu_strs, &action);
if (err != PRO_TK_NO_ERROR)
return -1;
err = ProUtilMenuStringsFree (&menu_strs);
if (action == 0)
status = ProTestDtlGroupSelect (drawing, p_group);
else if (action == 1)
status = ProTestDtlGroupSelectByName (drawing, p_group);
else
status = -1;
return status;
}
/*---------------------------------------------------------------------*\
Function: ProTestDtlGroupSelectByName()
Purpose: selection menu
Returns: 0 - success; -1 - error or selection canceled
\*---------------------------------------------------------------------*/
int ProTestDtlGroupSelectByName (
ProDrawing drawing,
ProDtlgroup* p_group)
{
ProError err = PRO_TK_NO_ERROR;
wchar_t **menu_strs;
ProDtlgroup *p_groups;
ProDtlgroupdata group_data;
ProName name;
int action = -1, group_num = 0, i = 0, sheet = -1;
err = ProDrawingCurrentSheetGet (drawing, &sheet);
TEST_CALL_REPORT ("ProDrawingCurrentSheetGet()", "ProTestDtlGroupSelectByName()",
err, err != PRO_TK_NO_ERROR);
err = ProDrawingDtlgroupsCollect (drawing, sheet, &p_groups);
TEST_CALL_REPORT ("ProDrawingDtlgroupsCollect()", "ProTestDtlGroupSelectByName()",
err, err != PRO_TK_NO_ERROR && err != PRO_TK_E_NOT_FOUND);
if (err != PRO_TK_NO_ERROR)
return -1;
ProArraySizeGet (p_groups, &group_num);
err = ProUtilMenuStringsAlloc (&menu_strs);
for (i = 0; i < group_num; i++)
{
err = ProDtlgroupDataGet (&p_groups[i], &group_data);
TEST_CALL_REPORT ("ProDtlgroupDataGet()", "ProTestDtlGroupSelectByName()",
err, err != PRO_TK_NO_ERROR);
if (err != PRO_TK_NO_ERROR)
return -1;
err = ProDtlgroupdataNameGet (group_data, name);
TEST_CALL_REPORT ("ProDtlgroupdataNameGet()", "ProTestDtlGroupSelectByName()",
err, err != PRO_TK_NO_ERROR);
err = ProUtilMenuStringsWstrAdd (&menu_strs, name);
err = ProDtlgroupdataFree (group_data);
TEST_CALL_REPORT ("ProDtlgroupdataFree()", "ProTestDtlGroupSelectByName()",
err, err != PRO_TK_NO_ERROR);
}
err = ProUtilMenuStringsIntValueSelect ((char*)"SelectGroup", menu_strs, &action);
if (err != PRO_TK_NO_ERROR)
return -1;
err = ProUtilMenuStringsFree (&menu_strs);
memcpy (p_group, &p_groups[action], sizeof (ProDtlgroup));
ProArrayFree ((ProArray*)&p_groups);
return 0;
}
/*---------------------------------------------------------------------*\
Function: ProTestDtlGroupList()
Purpose: Prints info about all groups for qcr comporison
Returns: 0 - success; -1 - error
\*---------------------------------------------------------------------*/
int ProTestDtlGroupList (void* app_data, int int_dummy)
{
ProDrawing drawing = (ProDrawing)app_data;
ProError err = PRO_TK_NO_ERROR;
ProDtlgroup *p_groups;
ProDtlgroupdata group_data;
ProDtlitem *p_group_items;
ProName name;
char info_file_name[] = "group_info.txt", str[PRO_NAME_SIZE];
FILE *fptr;
int group_num = 0, i = 0, j = 0, sheet = -1, id = -1, items_num;
err = ProDrawingCurrentSheetGet (drawing, &sheet);
TEST_CALL_REPORT ("ProDrawingCurrentSheetGet()", "ProTestDtlGroupList()",
err, err != PRO_TK_NO_ERROR);
err = ProDrawingDtlgroupsCollect (drawing, sheet, &p_groups);
TEST_CALL_REPORT ("ProDrawingDtlgroupsCollect()", "ProTestDtlGroupList()",
err, err != PRO_TK_NO_ERROR && err != PRO_TK_E_NOT_FOUND);
ProArraySizeGet (p_groups, &group_num);
if ((fptr = PTApplsUnicodeFopen (info_file_name, "w")) == NULL)
{
ProUtilMsgPrint ("gen", "TEST %0s", "Can't open info file for writing");
return -1;
}
for (i = 0; i < group_num; i++)
{
err = ProDtlgroupDataGet(&p_groups[i], &group_data);
TEST_CALL_REPORT ("ProDtlgroupDataGet()", "ProTestDtlGroupList()",
err, err != PRO_TK_NO_ERROR);
err = ProDtlgroupdataNameGet (group_data, name);
TEST_CALL_REPORT ("ProDtlgroupdataNameGet()", "ProTestDtlGroupList()",
err, err != PRO_TK_NO_ERROR);
ProWstringToString (str, name);
err = ProDtlgroupdataIdGet (group_data, &id);
TEST_CALL_REPORT ("ProDtlgroupdataIdGet()", "ProTestDtlGroupList()",
err, err != PRO_TK_NO_ERROR);
ProTKFprintf (fptr, "\nGroup name: %s\nGroup Id: %d\n", str, id);
err = ProDtlgroupdataItemsCollect (group_data, &p_group_items);
TEST_CALL_REPORT ("ProDtlgroupdataItemsCollect()", "ProTestDtlGroupList()",
err, err != PRO_TK_NO_ERROR && err != PRO_TK_E_NOT_FOUND);
ProArraySizeGet (p_group_items, &items_num);
ProTKFprintf (fptr, "hold %d items:\n", items_num);
for (j = 0; j < items_num; j++)
{
switch (p_group_items[j].type)
{
case PRO_NOTE:
ProTKFprintf (fptr, "PRO_NOTE\n");
break;
case PRO_DRAFT_ENTITY:
ProTKFprintf (fptr, "PRO_DRAFT_ENTITY\n");
break;
case PRO_SYMBOL_INSTANCE:
ProTKFprintf (fptr, "PRO_SYMBOL_INSTANCE\n");
break;
default:
ProTKFprintf (fptr, "Unknown type %d\n", p_group_items[j].type);
break;
}
}
ProArrayFree ((ProArray*)&p_group_items);
err = ProDtlgroupdataFree (group_data);
TEST_CALL_REPORT ("ProDtlgroupdataFree()", "ProTestDtlGroupList()",
err, err != PRO_TK_NO_ERROR);
}
ProArrayFree ((ProArray*)&p_groups);
fclose (fptr);
err = ProInfoWindowDisplay (ProStringToWstring (name, info_file_name),
NULL, NULL);
TEST_CALL_REPORT ("ProInfoWindowDisplay()", "ProTestDtlGroupList()",
err, err != PRO_TK_NO_ERROR);
return 0;
}
/*---------------------------------------------------------------------*\
Function: ProTestDtlGroupSelect()
Purpose: selects dtlgroup
Returns: 0 - success; -1 - error or selection canceled
\*---------------------------------------------------------------------*/
int ProTestDtlGroupSelect (
ProDrawing drawing,
ProDtlgroup* p_group) /*in: ProDtlgroup*/
{
int group_num = 0, n_sel = 0, i = 0, j = 0,
sheet = -1, items_num;
ProDtlitem group_item, *p_group_items;
ProDtlgroup *p_groups;
ProDtlgroupdata group_data;
ProSelection *p_sel = NULL;
ProError err = PRO_TK_NO_ERROR;
if (p_group == NULL)
return -1;
err = ProDrawingCurrentSheetGet (drawing, &sheet);
TEST_CALL_REPORT ("ProDrawingCurrentSheetGet()", "ProTestDtlGroupSelect()",
err, err != PRO_TK_NO_ERROR);
err = ProDrawingDtlgroupsCollect (drawing, sheet, &p_groups);
TEST_CALL_REPORT ("ProDrawingDtlgroupsCollect()", "ProTestDtlGroupSelect()",
err, err != PRO_TK_NO_ERROR && err != PRO_TK_E_NOT_FOUND);
err = ProArraySizeGet (p_groups, &group_num);
TEST_CALL_REPORT ("ProArraySizeGet()", "ProTestDtlGroupSelect()",
err, err != PRO_TK_NO_ERROR);
while (1)
{
ProUtilMsgPrint ("gen", "TEST %0s", "Select group" );
err = ProSelect ((char*)"any_note,draft_ent,dtl_symbol", 1,
NULL, NULL, NULL, NULL, &p_sel, &n_sel);
TEST_CALL_REPORT ("ProSelect()", "ProTestDtlGroupSelect()",
err, err != PRO_TK_NO_ERROR);
if (err != PRO_TK_NO_ERROR || n_sel < 1)
return -1;
err = ProSelectionModelitemGet (p_sel[0], &group_item);
TEST_CALL_REPORT ("ProSelectionModelitemGet()", "ProTestDtlGroupSelect()",
err, err != PRO_TK_NO_ERROR);
for (i = 0; i < group_num; i++)
{
err = ProDtlgroupDataGet(&p_groups[0], &group_data);
TEST_CALL_REPORT ("ProDtlgroupDataGet()", "ProTestDtlGroupSelect()",
err, err != PRO_TK_NO_ERROR);
err = ProDtlgroupdataItemsCollect (group_data, &p_group_items);
TEST_CALL_REPORT ("ProDtlgroupdataItemsCollect()", "ProTestDtlGroupSelect()",
err, err != PRO_TK_NO_ERROR && err != PRO_TK_E_NOT_FOUND);
err = ProArraySizeGet (p_group_items, &items_num);
TEST_CALL_REPORT ("ProArraySizeGet()", "ProTestDtlGroupSelect()",
err, err != PRO_TK_NO_ERROR);
for (j = 0; j < items_num; j++)
{
if (ProTestDtlitemsCompare (&group_item, &p_group_items[j]) == 0)
break;
}
err = ProArrayFree ((ProArray*)&p_group_items);
TEST_CALL_REPORT ("ProArrayFree()", "ProTestDtlGroupSelect()",
err, err != PRO_TK_NO_ERROR);
err = ProDtlgroupdataFree (group_data);
TEST_CALL_REPORT ("ProDtlgroupdataFree()", "ProTestDtlGroupSelect()",
err, err != PRO_TK_NO_ERROR);
if (j != items_num)
break;
}
if (i != group_num)
break;
ProUtilMsgPrint ("gen", "TEST %0s", "This item is not a group item" );
}
memcpy (p_group, &p_groups[i], sizeof (ProDtlgroup));
err = ProArrayFree ((ProArray*)&p_groups);
TEST_CALL_REPORT ("ProArrayFree()", "ProTestDtlGroupSelect()",
err, err != PRO_TK_NO_ERROR);
return 0;
}
/*---------------------------------------------------------------------*\
Function: ProTestDtlGroupCreate()
Purpose: creates dtlgroup
Returns: 0 - success; -1 - error.
\*---------------------------------------------------------------------*/
int ProTestDtlGroupCreate (void* app_data, int int_dummy)
{
ProDrawing drawing = (ProDrawing)app_data;
ProSelection *p_sel = NULL;
ProDtlgroupdata group_data;
ProDtlgroup group;
ProDtlitem group_item;
ProName name, default_name;
int i = 0, n_sel;
ProError err = PRO_TK_NO_ERROR;
ProStringToWstring (default_name, (char*)"group");
ProUtilMsgPrint ("gen", "TEST %0s", "Enter group name:" );
ProUtilStringGet (name, default_name, PRO_NAME_SIZE);
ProUtilMsgPrint ("gen", "TEST %0s", "Select note, entity or symbol" );
err = ProSelect ((char*)"any_note,draft_ent,dtl_symbol", -1, NULL, NULL, NULL,
NULL, &p_sel, &n_sel);
TEST_CALL_REPORT ("ProSelect()", "ProTestDtlGroupCreate()",
err, err != PRO_TK_NO_ERROR);
if (err != PRO_TK_NO_ERROR || n_sel < 1)
return -1;
err = ProDtlgroupdataAlloc (drawing, name, &group_data);
TEST_CALL_REPORT ("ProDtlgroupdataAlloc()", "ProTestDtlGroupCreate()",
err, err != PRO_TK_NO_ERROR);
for (i = 0; i < n_sel; i++)
{
err = ProSelectionModelitemGet (p_sel[i], &group_item);
TEST_CALL_REPORT ("ProSelectionModelitemGet()", "ProTestDtlGroupCreate()",
err, err != PRO_TK_NO_ERROR);
err = ProDtlgroupdataItemAdd (group_data, &group_item);
TEST_CALL_REPORT ("ProDtlgroupdataItemAdd()", "ProTestDtlGroupCreate()",
err, err != PRO_TK_NO_ERROR);
}
err = ProDtlgroupCreate (drawing, group_data, &group);
TEST_CALL_REPORT ("ProDtlgroupCreate()", "ProTestDtlGroupCreate()",
err, err != PRO_TK_NO_ERROR);
err = ProDtlgroupdataFree (group_data);
TEST_CALL_REPORT ("ProDtlgroupdataFree()", "ProTestDtlGroupCreate()",
err, err != PRO_TK_NO_ERROR);
return 0;
}
/*---------------------------------------------------------------------*\
Function: ProTestDtlGroupSuppress()
Purpose: suppresses dtlgroup
Returns: 0 - success; -1 - error.
\*---------------------------------------------------------------------*/
int ProTestDtlGroupSuppress (void* app_data, int int_dummy)
{
ProDrawing drawing = (ProDrawing)app_data;
ProDtlgroup group;
ProError err = PRO_TK_NO_ERROR;
if (ProTestDtlGroupSelectMenu (drawing, &group) == -1)
return -1;
err = ProDtlgroupErase (&group);
TEST_CALL_REPORT ("ProDtlgroupErase()", "ProTestDtlGroupSuppress()",
err, err != PRO_TK_NO_ERROR);
return 0;
}
/*---------------------------------------------------------------------*\
Function: ProTestDtlGroupResume()
Purpose: resume dtlgroup
Returns: 0 - success; -1 - error.
\*---------------------------------------------------------------------*/
int ProTestDtlGroupResume (void* app_data, int int_dummy)
{
ProDrawing drawing = (ProDrawing)app_data;
ProDtlgroup group;
ProError err = PRO_TK_NO_ERROR;
if (ProTestDtlGroupSelectMenu (drawing, &group) == -1)
return -1;
err = ProDtlgroupDraw (&group);
TEST_CALL_REPORT ("ProDtlgroupDraw()", "ProTestDtlGroupResume()",
err, err != PRO_TK_NO_ERROR);
return 0;
}
/*---------------------------------------------------------------------*\
Function: ProTestDtlGroupExplode()
Purpose: Explode dtlgroup
Returns: 0 - success; -1 - error.
\*---------------------------------------------------------------------*/
int ProTestDtlGroupExplode (void* app_data, int int_dummy)
{
ProDrawing drawing = (ProDrawing)app_data;
ProDtlgroup group;
ProError err = PRO_TK_NO_ERROR;
if (ProTestDtlGroupSelectMenu (drawing, &group) == -1)
return -1;
err = ProDtlgroupDelete (&group);
TEST_CALL_REPORT ("ProDtlgroupDelete()", "ProTestDtlGroupExplode()",
err, err != PRO_TK_NO_ERROR);
return 0;
}
/*---------------------------------------------------------------------*\
Function: ProTestDtlGroupEditMenu()
Purpose: Menu for edititing
Returns: 0 - success; -1 - error.
\*---------------------------------------------------------------------*/
int ProTestDtlGroupEditMenu (void* app_data, int int_dummy)
{
ProDrawing drawing = (ProDrawing)app_data;
int menu_id;
int action;
ProError err = PRO_TK_NO_ERROR;
err = ProMenuFileRegister( (char*)"Edit", (char*)"tkdtlgroupedit.mnu", &menu_id );
TEST_CALL_REPORT( "ProMenuFileRegister()", "ProTestDtlEditMenu()",
err, err != PRO_TK_NO_ERROR );
/* Define menu buttons */
ProMenubuttonActionSet( (char*)"Edit", (char*)"Add",
(ProMenubuttonAction)ProTestDtlGroupEdit, drawing, GRP_EDIT_ADD);
ProMenubuttonActionSet( (char*)"Edit", (char*)"Remove",
(ProMenubuttonAction)ProTestDtlGroupEdit, drawing, GRP_EDIT_REMOVE);
ProMenubuttonActionSet( (char*)"Edit", (char*)"Edit",
(ProMenubuttonAction)ProMenuDelete, NULL, 0 );
/*--------------------------*\
Run menu Disp List
\*--------------------------*/
err = ProMenuCreate( PROMENUTYPE_MAIN, (char*)"Edit", &menu_id );
TEST_CALL_REPORT( "ProMenuCreate()", "ProTestDtlEditMenu()",
err, err != PRO_TK_NO_ERROR );
if( err == PRO_TK_NO_ERROR )
{
err = ProMenuProcess( (char*)"Edit", &action );
TEST_CALL_REPORT( "ProMenuProcess()", "ProTestDtlEditMenu()",
err, err != PRO_TK_NO_ERROR && err != PRO_TK_E_FOUND);
}
return 0;
}
/*---------------------------------------------------------------------*\
Function: ProTestDtlitemsCompare()
Purpose: Compares two dtlitems
Returns: 0 - success; -1 - error.
\*---------------------------------------------------------------------*/
int ProTestDtlitemsCompare (ProDtlitem *item1, ProDtlitem *item2)
{
if (item1->type != item2->type)
return -1;
return (item1->id == item2->id)? 0 : -1;
}
/*---------------------------------------------------------------------*\
Function: ProTestDtlGroupEdit()
Purpose: Edit
Returns: 0 - success; -1 - error.
\*---------------------------------------------------------------------*/
int ProTestDtlGroupEdit (void* app_data, int action)
{
ProDrawing drawing = (ProDrawing)app_data;
ProDtlgroup group;
ProDtlgroupdata group_data;
ProDtlitem *p_group_items, group_item;
ProError err = PRO_TK_NO_ERROR;
ProSelection *p_sel = NULL;
int items_num = 0, i = 0, j = 0, n_sel;
if (ProTestDtlGroupSelectMenu (drawing, &group) == -1)
return -1;
err = ProDtlgroupDataGet (&group, &group_data);
TEST_CALL_REPORT ("ProDtlgroupDataGet()", "ProTestDtlGroupEdit()",
err, err != PRO_TK_NO_ERROR);
err = ProDtlgroupdataItemsCollect (group_data, &p_group_items);
TEST_CALL_REPORT ("ProDtlgroupdataItemsCollect()", "ProTestDtlGroupEdit()",
err, err != PRO_TK_NO_ERROR && err != PRO_TK_E_NOT_FOUND);
err = ProArraySizeGet (p_group_items, &items_num);
ProUtilMsgPrint ("gen", "TEST %0s", "Select draft items" );
err = ProSelect ((char*)"any_note,draft_ent,dtl_symbol", -1, NULL, NULL, NULL,
NULL, &p_sel, &n_sel);
TEST_CALL_REPORT ("ProSelect()", "ProTestDtlGroupEdit()",
err, err != PRO_TK_NO_ERROR);
if (err != PRO_TK_NO_ERROR || n_sel < 1)
return -1;
for (i = 0; i < n_sel; i++)
{
err = ProSelectionModelitemGet (p_sel[i], &group_item);
TEST_CALL_REPORT ("ProSelectionModelitemGet()", "ProTestDtlGroupEdit()",
err, err != PRO_TK_NO_ERROR);
for (j = 0; j < items_num; j++)
{
if (ProTestDtlitemsCompare (&group_item, &p_group_items[j]) == 0)
break;
}
/*item is found*/
if ((j != items_num) && (action == GRP_EDIT_REMOVE))
{
err = ProArrayObjectRemove ((ProArray*)&p_group_items, j, 1);
TEST_CALL_REPORT ("ProArrayObjectRemove()", "ProTestDtlGroupEdit()",
err, err != PRO_TK_NO_ERROR);
ProArraySizeGet (p_group_items, &items_num);
}
/*item is not found*/
else if ((j == items_num) && (action == GRP_EDIT_ADD))
{
ProArrayObjectAdd ((ProArray*)&p_group_items,
PRO_VALUE_UNUSED, 1, &group_item);
TEST_CALL_REPORT ("ProArrayObjectAdd()", "ProTestDtlGroupEdit()",
err, err != PRO_TK_NO_ERROR);
ProArraySizeGet (p_group_items, &items_num);
}
}
err = ProDtlgroupdataItemsSet (group_data, p_group_items);
TEST_CALL_REPORT ("ProDtlgroupdataItemsSet()", "ProTestDtlGroupEdit()",
err, err != PRO_TK_NO_ERROR);
err = ProDtlgroupModify (&group, group_data);
TEST_CALL_REPORT ("ProDtlgroupModify()", "ProTestDtlGroupEdit()",
err, err != PRO_TK_NO_ERROR);
err = ProDtlgroupdataFree (group_data);
TEST_CALL_REPORT ("ProDtlgroupdataFree()", "ProTestDtlGroupEdit()",
err, err != PRO_TK_NO_ERROR);
return 0;
}