mirror of
https://github.com/vczh-libraries/Release.git
synced 2026-05-17 23:38:47 +08:00
Update Release
This commit is contained in:
@@ -219,7 +219,7 @@ Helper Functions
|
||||
if (desc.imageId)
|
||||
{
|
||||
vint index = trace.imageCreations->Keys().IndexOf(desc.imageId.Value());
|
||||
if (index!= 1)
|
||||
if (index != -1)
|
||||
{
|
||||
auto binary = trace.imageCreations->Values()[index].imageData;
|
||||
binary->SeekFromBegin(0);
|
||||
@@ -1563,7 +1563,8 @@ UnitTestSnapshotFileNode
|
||||
|
||||
WString GetName() override
|
||||
{
|
||||
return file.GetFilePath().GetName();
|
||||
auto name = file.GetFilePath().GetName();
|
||||
return name.Left(name.Length() - 5);
|
||||
}
|
||||
|
||||
LazyList<Ptr<IUnitTestSnapshotFileNode>> GetChildren() override
|
||||
|
||||
@@ -186,8 +186,21 @@ void GacUIUnitTest_Start(const WString& appName, Nullable<UnitTestScreenConfig>
|
||||
auto textLog2 = JsonToString(jsonLog2, formatting);
|
||||
CHECK_ERROR(textLog == textLog2, ERROR_MESSAGE_PREFIX L"Serialization and deserialization doesn't match.");
|
||||
}
|
||||
bool succeeded = snapshotFile.WriteAllText(textLog, false, stream::BomEncoder::Utf8);
|
||||
CHECK_ERROR(succeeded, ERROR_MESSAGE_PREFIX L"Failed to write the snapshot file.");
|
||||
|
||||
bool skipWriting = false;
|
||||
if (snapshotFile.Exists())
|
||||
{
|
||||
auto previousLog = snapshotFile.ReadAllTextByBom();
|
||||
if (previousLog == textLog)
|
||||
{
|
||||
skipWriting = true;
|
||||
}
|
||||
}
|
||||
if (!skipWriting)
|
||||
{
|
||||
bool succeeded = snapshotFile.WriteAllText(textLog, true, stream::BomEncoder::Utf8);
|
||||
CHECK_ERROR(succeeded, ERROR_MESSAGE_PREFIX L"Failed to write the snapshot file.");
|
||||
}
|
||||
}
|
||||
#undef ERROR_MESSAGE_PREFIX
|
||||
}
|
||||
@@ -209,8 +222,21 @@ void GacUIUnitTest_Start_WithResourceAsText(const WString& appName, Nullable<Uni
|
||||
WString::Unmanaged(L"[x86].txt")
|
||||
#endif
|
||||
);
|
||||
bool succeeded = snapshotFile.WriteAllText(workflow, false, stream::BomEncoder::Utf8);
|
||||
CHECK_ERROR(succeeded, ERROR_MESSAGE_PREFIX L"Failed to write the snapshot file.");
|
||||
|
||||
bool skipWriting = false;
|
||||
if (snapshotFile.Exists())
|
||||
{
|
||||
auto previousLog = snapshotFile.ReadAllTextByBom();
|
||||
if (previousLog == workflow)
|
||||
{
|
||||
skipWriting = true;
|
||||
}
|
||||
}
|
||||
if (!skipWriting)
|
||||
{
|
||||
bool succeeded = snapshotFile.WriteAllText(workflow, true, stream::BomEncoder::Utf8);
|
||||
CHECK_ERROR(succeeded, ERROR_MESSAGE_PREFIX L"Failed to write the snapshot file.");
|
||||
}
|
||||
}
|
||||
previousMainProxy(protocol, context);
|
||||
});
|
||||
|
||||
+72
-48
@@ -329,7 +329,7 @@ Keys
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
Mouse
|
||||
Mouse Move Events
|
||||
***********************************************************************/
|
||||
|
||||
void MouseMove(NativePoint position)
|
||||
@@ -348,52 +348,73 @@ Mouse
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
Mouse (Left)
|
||||
Mouse Wheel Events
|
||||
***********************************************************************/
|
||||
|
||||
void _LDown(Nullable<NativePoint> position = {})
|
||||
{
|
||||
#define ERROR_MESSAGE_PREFIX CLASS_PREFIX L"_LDown(...)#"
|
||||
if (position) MouseMove(position.Value());
|
||||
CHECK_ERROR(!leftPressing, ERROR_MESSAGE_PREFIX L"The button should not be being pressed.");
|
||||
leftPressing = true;
|
||||
UseEvents().OnIOButtonDown({ remoteprotocol::IOMouseButton::Left,MakeMouseInfo() });
|
||||
#undef ERROR_MESSAGE_PREFIX
|
||||
}
|
||||
/***********************************************************************
|
||||
Mouse Click Events
|
||||
***********************************************************************/
|
||||
|
||||
void _LUp(Nullable<NativePoint> position = {})
|
||||
{
|
||||
#define ERROR_MESSAGE_PREFIX CLASS_PREFIX L"_LUp(...)#"
|
||||
if (position) MouseMove(position.Value());
|
||||
CHECK_ERROR(leftPressing, ERROR_MESSAGE_PREFIX L"The button should be being pressed.");
|
||||
leftPressing = false;
|
||||
UseEvents().OnIOButtonUp({ remoteprotocol::IOMouseButton::Left,MakeMouseInfo() });
|
||||
#undef ERROR_MESSAGE_PREFIX
|
||||
}
|
||||
#define DEFINE_MOUSE_ACTIONS(PREFIX, LOWER, UPPER)\
|
||||
void _ ## PREFIX ## Down(Nullable<NativePoint> position = {})\
|
||||
{\
|
||||
if (position) MouseMove(position.Value());\
|
||||
CHECK_ERROR(!LOWER ## Pressing, CLASS_PREFIX L"_" L ## #PREFIX L"Down(...)#" L"The button should not be being pressed.");\
|
||||
LOWER ## Pressing = true;\
|
||||
UseEvents().OnIOButtonDown({ remoteprotocol::IOMouseButton::UPPER,MakeMouseInfo() });\
|
||||
}\
|
||||
void _ ## PREFIX ## Up(Nullable<NativePoint> position = {})\
|
||||
{\
|
||||
if (position) MouseMove(position.Value());\
|
||||
CHECK_ERROR(LOWER ## Pressing, CLASS_PREFIX L"_" L ## #PREFIX L"Up(...)#" L"The button should be being pressed.");\
|
||||
LOWER ## Pressing = false;\
|
||||
UseEvents().OnIOButtonUp({ remoteprotocol::IOMouseButton::UPPER,MakeMouseInfo() });\
|
||||
}\
|
||||
void _ ## PREFIX ## DBClick(Nullable<NativePoint> position = {})\
|
||||
{\
|
||||
if (position) MouseMove(position.Value());\
|
||||
CHECK_ERROR(!LOWER ## Pressing, CLASS_PREFIX L"_" L ## #PREFIX L"DBClick(...)#" L"The button should not be being pressed.");\
|
||||
LOWER ## Pressing = true;\
|
||||
UseEvents().OnIOButtonDoubleClick({ remoteprotocol::IOMouseButton::UPPER,MakeMouseInfo() });\
|
||||
}\
|
||||
void PREFIX ## Click(Nullable<NativePoint> position = {})\
|
||||
{\
|
||||
_ ## PREFIX ## Down(position);\
|
||||
_ ## PREFIX ## Up(position);\
|
||||
}\
|
||||
void PREFIX ## Click(Nullable<NativePoint> position, bool ctrl, bool shift, bool alt)\
|
||||
{\
|
||||
if (ctrl) _KeyDown(VKEY::KEY_CONTROL);\
|
||||
if (shift) _KeyDown(VKEY::KEY_SHIFT);\
|
||||
if (alt) _KeyDown(VKEY::KEY_MENU);\
|
||||
PREFIX ## Click(position);\
|
||||
if (alt) _KeyUp(VKEY::KEY_MENU);\
|
||||
if (shift) _KeyUp(VKEY::KEY_SHIFT);\
|
||||
if (ctrl) _KeyUp(VKEY::KEY_CONTROL);\
|
||||
}\
|
||||
void PREFIX ## DBClick(Nullable<NativePoint> position = {})\
|
||||
{\
|
||||
_ ## PREFIX ## Down(position);\
|
||||
_ ## PREFIX ## Up(position);\
|
||||
_ ## PREFIX ## DBClick(position);\
|
||||
_ ## PREFIX ## Up(position);\
|
||||
}\
|
||||
void PREFIX ## DBClick(Nullable<NativePoint> position, bool ctrl, bool shift, bool alt)\
|
||||
{\
|
||||
if (ctrl) _KeyDown(VKEY::KEY_CONTROL);\
|
||||
if (shift) _KeyDown(VKEY::KEY_SHIFT);\
|
||||
if (alt) _KeyDown(VKEY::KEY_MENU);\
|
||||
PREFIX ## DBClick(position);\
|
||||
if (alt) _KeyUp(VKEY::KEY_MENU);\
|
||||
if (shift) _KeyUp(VKEY::KEY_SHIFT);\
|
||||
if (ctrl) _KeyUp(VKEY::KEY_CONTROL);\
|
||||
}\
|
||||
|
||||
void _LDBClick(Nullable<NativePoint> position = {})
|
||||
{
|
||||
#define ERROR_MESSAGE_PREFIX CLASS_PREFIX L"_LDBClick(...)#"
|
||||
if (position) MouseMove(position.Value());
|
||||
CHECK_ERROR(!leftPressing, ERROR_MESSAGE_PREFIX L"The button should not be being pressed.");
|
||||
leftPressing = true;
|
||||
UseEvents().OnIOButtonDoubleClick({ remoteprotocol::IOMouseButton::Left,MakeMouseInfo() });
|
||||
#undef ERROR_MESSAGE_PREFIX
|
||||
}
|
||||
DEFINE_MOUSE_ACTIONS(L, left, Left);
|
||||
DEFINE_MOUSE_ACTIONS(M, middle, Middle);
|
||||
DEFINE_MOUSE_ACTIONS(R, right, Right);
|
||||
|
||||
void LClick(Nullable<NativePoint> position = {})
|
||||
{
|
||||
_LDown(position);
|
||||
_LUp(position);
|
||||
}
|
||||
|
||||
void LDBClick(Nullable<NativePoint> position = {})
|
||||
{
|
||||
_LDown(position);
|
||||
_LUp(position);
|
||||
_LDBClick(position);
|
||||
_LUp(position);
|
||||
}
|
||||
#undef DEFINE_MOUSE_ACTIONS
|
||||
|
||||
#undef CLASS_PREFIX
|
||||
};
|
||||
@@ -808,7 +829,7 @@ IGuiRemoteProtocolMessages (Elements - SolidLabel)
|
||||
remoteprotocol::ElementMeasuring_FontHeight measuring;
|
||||
measuring.fontFamily = arguments.font.Value().fontFamily;
|
||||
measuring.fontSize = arguments.font.Value().size;
|
||||
measuring.height = measuring.fontSize;
|
||||
measuring.height = measuring.fontSize + 4;
|
||||
measuringForNextRendering.fontHeights->Add(measuring);
|
||||
}
|
||||
break;
|
||||
@@ -860,7 +881,7 @@ IGuiRemoteProtocolMessages (Elements - SolidLabel)
|
||||
{
|
||||
// width of the text is 0
|
||||
// insert a line break when there is no space horizontally
|
||||
textHeight = size * From(lines)
|
||||
textHeight = 4 + size * From(lines)
|
||||
.Select([columns = width / size](vint length)
|
||||
{
|
||||
if (columns == 0)
|
||||
@@ -878,7 +899,7 @@ IGuiRemoteProtocolMessages (Elements - SolidLabel)
|
||||
{
|
||||
// width of the text is width of the longest line
|
||||
textWidth = size * From(lines).Max();
|
||||
textHeight = size * lines.Count();
|
||||
textHeight = 4 + size * lines.Count();
|
||||
}
|
||||
|
||||
if (!measuringForNextRendering.minSizes)
|
||||
@@ -1316,8 +1337,8 @@ UnitTestRemoteProtocol
|
||||
transformed
|
||||
});
|
||||
candidateRenderingResult = {};
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -1402,6 +1423,7 @@ UnitTestRemoteProtocol
|
||||
const UnitTestFrameworkConfig& frameworkConfig;
|
||||
WString appName;
|
||||
collections::List<EventPair> processRemoteEvents;
|
||||
vint lastFrameIndex = -1;
|
||||
vint nextEventIndex = 0;
|
||||
bool stopped = false;
|
||||
|
||||
@@ -1457,12 +1479,14 @@ IGuiRemoteProtocol
|
||||
{
|
||||
if (LogRenderingResult())
|
||||
{
|
||||
vl::unittest::UnitTest::PrintMessage(L"Execute idle frame[" + itow(nextEventIndex) + L"]", vl::unittest::UnitTest::MessageKind::Info);
|
||||
auto [name, func] = processRemoteEvents[nextEventIndex];
|
||||
vl::unittest::UnitTest::PrintMessage(L"Execute idle frame[" + (name ? name.Value() : itow(nextEventIndex)) + L"]", vl::unittest::UnitTest::MessageKind::Info);
|
||||
CHECK_ERROR(lastFrameIndex != loggedTrace.frames->Count() - 1, ERROR_MESSAGE_PREFIX L"No rendering occured after the last idle frame.");
|
||||
lastFrameIndex = loggedTrace.frames->Count() - 1;
|
||||
|
||||
if (name)
|
||||
{
|
||||
auto&& lastFrame = (*loggedTrace.frames.Obj())[loggedTrace.frames->Count() - 1];
|
||||
CHECK_ERROR(!lastFrame.frameName, ERROR_MESSAGE_PREFIX L"The last frame has already been assigned a name.");
|
||||
lastFrame.frameName = name;
|
||||
}
|
||||
func();
|
||||
|
||||
+1077
-852
File diff suppressed because it is too large
Load Diff
+584
-427
File diff suppressed because it is too large
Load Diff
@@ -9038,9 +9038,11 @@ GuiPredefinedInstanceLoadersPlugin
|
||||
ADD_VIRTUAL_CONTROL (MenuSplitter, GuiControl, MenuSplitter );
|
||||
ADD_VIRTUAL_CONTROL (MenuBarButton, GuiToolstripButton, MenuBarButton );
|
||||
ADD_VIRTUAL_CONTROL (MenuItemButton, GuiToolstripButton, MenuItemButton );
|
||||
ADD_VIRTUAL_CONTROL (ToolstripToolBarInMenu, GuiToolstripToolBar, ToolstripToolBarInMenu );
|
||||
ADD_VIRTUAL_CONTROL (ToolstripDropdownButton, GuiToolstripButton, ToolstripDropdownButton );
|
||||
ADD_VIRTUAL_CONTROL (ToolstripSplitButton, GuiToolstripButton, ToolstripSplitButton );
|
||||
ADD_VIRTUAL_CONTROL (ToolstripSplitter, GuiControl, ToolstripSplitter );
|
||||
ADD_VIRTUAL_CONTROL (ToolstripSplitterInMenu, GuiControl, ToolstripSplitterInMenu );
|
||||
ADD_VIRTUAL_CONTROL (RibbonSmallButton, GuiToolstripButton, RibbonSmallButton );
|
||||
ADD_VIRTUAL_CONTROL (RibbonSmallDropdownButton, GuiToolstripButton, RibbonSmallDropdownButton );
|
||||
ADD_VIRTUAL_CONTROL (RibbonSmallSplitButton, GuiToolstripButton, RibbonSmallSplitButton );
|
||||
|
||||
+53
-26
@@ -1830,12 +1830,26 @@ Type Declaration (Extra)
|
||||
CLASS_MEMBER_CONSTRUCTOR(GuiSelectableButton::MutexGroupController*(), NO_PARAMETER)
|
||||
END_CLASS_MEMBER(GuiSelectableButton::MutexGroupController)
|
||||
|
||||
BEGIN_INTERFACE_MEMBER(GuiListControl::IItemProviderCallback)
|
||||
BEGIN_INTERFACE_MEMBER(list::IItemProviderCallback)
|
||||
CLASS_MEMBER_BASE(IDescriptable)
|
||||
|
||||
CLASS_MEMBER_METHOD(OnAttached, {L"provider"})
|
||||
CLASS_MEMBER_METHOD(OnItemModified, {L"start" _ L"count" _ L"newCount" _ L"itemReferenceUpdated"})
|
||||
END_INTERFACE_MEMBER(GuiListControl::IItemProviderCallback)
|
||||
END_INTERFACE_MEMBER(list::IItemProviderCallback)
|
||||
|
||||
BEGIN_INTERFACE_MEMBER(list::IItemProvider)
|
||||
CLASS_MEMBER_BASE(IDescriptable)
|
||||
|
||||
CLASS_MEMBER_METHOD(AttachCallback, {L"value"})
|
||||
CLASS_MEMBER_METHOD(DetachCallback, {L"value"})
|
||||
CLASS_MEMBER_METHOD(PushEditing, NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(PopEditing, NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(IsEditing, NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(Count, NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(GetTextValue, { L"itemIndex" })
|
||||
CLASS_MEMBER_METHOD(GetBindingValue, { L"itemIndex" })
|
||||
CLASS_MEMBER_METHOD(RequestView, {L"identifier"})
|
||||
END_INTERFACE_MEMBER(list::IItemProvider)
|
||||
|
||||
BEGIN_INTERFACE_MEMBER_NOPROXY(GuiListControl::IItemArrangerCallback)
|
||||
CLASS_MEMBER_BASE(IDescriptable)
|
||||
@@ -1855,22 +1869,8 @@ Type Declaration (Extra)
|
||||
ENUM_CLASS_ITEM(NotMoved)
|
||||
END_ENUM_ITEM(GuiListControl::EnsureItemVisibleResult)
|
||||
|
||||
BEGIN_INTERFACE_MEMBER(GuiListControl::IItemProvider)
|
||||
CLASS_MEMBER_BASE(IDescriptable)
|
||||
|
||||
CLASS_MEMBER_METHOD(AttachCallback, {L"value"})
|
||||
CLASS_MEMBER_METHOD(DetachCallback, {L"value"})
|
||||
CLASS_MEMBER_METHOD(PushEditing, NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(PopEditing, NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(IsEditing, NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(Count, NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(GetTextValue, { L"itemIndex" })
|
||||
CLASS_MEMBER_METHOD(GetBindingValue, { L"itemIndex" })
|
||||
CLASS_MEMBER_METHOD(RequestView, {L"identifier"})
|
||||
END_INTERFACE_MEMBER(GuiListControl::IItemProvider)
|
||||
|
||||
BEGIN_INTERFACE_MEMBER(GuiListControl::IItemArranger)
|
||||
CLASS_MEMBER_BASE(GuiListControl::IItemProviderCallback)
|
||||
CLASS_MEMBER_BASE(list::IItemProviderCallback)
|
||||
|
||||
CLASS_MEMBER_PROPERTY_FAST(Callback)
|
||||
CLASS_MEMBER_PROPERTY_READONLY_FAST(TotalSize)
|
||||
@@ -1887,7 +1887,7 @@ Type Declaration (Extra)
|
||||
END_INTERFACE_MEMBER(GuiListControl::IItemArranger)
|
||||
|
||||
BEGIN_CLASS_MEMBER(ItemProviderBase)
|
||||
CLASS_MEMBER_BASE(GuiListControl::IItemProvider)
|
||||
CLASS_MEMBER_BASE(list::IItemProvider)
|
||||
END_CLASS_MEMBER(ItemProviderBase)
|
||||
|
||||
BEGIN_CLASS_MEMBER(RangedItemArrangerBase)
|
||||
@@ -1931,7 +1931,7 @@ Type Declaration (Extra)
|
||||
END_CLASS_MEMBER(TextItem)
|
||||
|
||||
BEGIN_CLASS_MEMBER(TextItemProvider)
|
||||
CLASS_MEMBER_BASE(GuiListControl::IItemProvider)
|
||||
CLASS_MEMBER_BASE(list::IItemProvider)
|
||||
CLASS_MEMBER_BASE(ITextItemView)
|
||||
END_CLASS_MEMBER(TextItemProvider)
|
||||
|
||||
@@ -2001,7 +2001,7 @@ Type Declaration (Extra)
|
||||
END_CLASS_MEMBER(ListViewColumn)
|
||||
|
||||
BEGIN_CLASS_MEMBER(ListViewItemProvider)
|
||||
CLASS_MEMBER_BASE(GuiListControl::IItemProvider)
|
||||
CLASS_MEMBER_BASE(list::IItemProvider)
|
||||
CLASS_MEMBER_BASE(IListViewItemView)
|
||||
CLASS_MEMBER_BASE(ListViewColumnItemArranger::IColumnItemView)
|
||||
END_CLASS_MEMBER(ListViewItemProvider)
|
||||
@@ -2021,6 +2021,7 @@ Type Declaration (Extra)
|
||||
|
||||
CLASS_MEMBER_METHOD(GetParentMenuService, NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(GetPreferredDirection, NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(GetHostThemeName, NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(IsActiveState, NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(IsSubMenuActivatedByMouseDown, NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(MenuItemExecuted, NO_PARAMETER)
|
||||
@@ -2360,6 +2361,26 @@ Type Declaration (Extra)
|
||||
CLASS_MEMBER_BASE(IDataProcessorCallback)
|
||||
END_CLASS_MEMBER(DataProvider)
|
||||
|
||||
BEGIN_CLASS_MEMBER(GuiBindableTextList::ItemSource)
|
||||
CLASS_MEMBER_BASE(ItemProviderBase)
|
||||
CLASS_MEMBER_BASE(ITextItemView)
|
||||
END_CLASS_MEMBER(GuiBindableTextList::ItemSource)
|
||||
|
||||
BEGIN_CLASS_MEMBER(GuiBindableListView::ItemSource)
|
||||
CLASS_MEMBER_BASE(ItemProviderBase)
|
||||
CLASS_MEMBER_BASE(IListViewItemView)
|
||||
CLASS_MEMBER_BASE(ListViewColumnItemArranger::IColumnItemView)
|
||||
END_CLASS_MEMBER(GuiBindableListView::ItemSource)
|
||||
|
||||
BEGIN_CLASS_MEMBER(GuiBindableTreeView::ItemSourceNode)
|
||||
CLASS_MEMBER_BASE(INodeProvider)
|
||||
END_CLASS_MEMBER(GuiBindableTreeView::ItemSourceNode)
|
||||
|
||||
BEGIN_CLASS_MEMBER(GuiBindableTreeView::ItemSource)
|
||||
CLASS_MEMBER_BASE(NodeRootProviderBase)
|
||||
CLASS_MEMBER_BASE(ITreeViewItemView)
|
||||
END_CLASS_MEMBER(GuiBindableTreeView::ItemSource)
|
||||
|
||||
/***********************************************************************
|
||||
Type Declaration (Class)
|
||||
***********************************************************************/
|
||||
@@ -2582,7 +2603,7 @@ Type Declaration (Class)
|
||||
|
||||
BEGIN_CLASS_MEMBER(GuiListControl)
|
||||
CLASS_MEMBER_BASE(GuiScrollView)
|
||||
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_3(GuiListControl, GuiListControl::IItemProvider*, itemProvider, bool, acceptFocus)
|
||||
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_3(GuiListControl, list::IItemProvider*, itemProvider, bool, acceptFocus)
|
||||
|
||||
CLASS_MEMBER_GUIEVENT(AdoptedSizeInvalidated)
|
||||
CLASS_MEMBER_GUIEVENT(ItemLeftButtonDown)
|
||||
@@ -2610,7 +2631,7 @@ Type Declaration (Class)
|
||||
|
||||
BEGIN_CLASS_MEMBER(GuiSelectableListControl)
|
||||
CLASS_MEMBER_BASE(GuiListControl)
|
||||
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiSelectableListControl, GuiListControl::IItemProvider*, itemProvider)
|
||||
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiSelectableListControl, list::IItemProvider*, itemProvider)
|
||||
|
||||
CLASS_MEMBER_GUIEVENT(SelectionChanged)
|
||||
|
||||
@@ -2628,7 +2649,7 @@ Type Declaration (Class)
|
||||
|
||||
BEGIN_CLASS_MEMBER(GuiVirtualTextList)
|
||||
CLASS_MEMBER_BASE(GuiSelectableListControl)
|
||||
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2(GuiVirtualTextList, GuiListControl::IItemProvider*, L"itemProvider")
|
||||
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2(GuiVirtualTextList, list::IItemProvider*, L"itemProvider")
|
||||
|
||||
CLASS_MEMBER_GUIEVENT(ItemChecked)
|
||||
CLASS_MEMBER_PROPERTY_FAST(View)
|
||||
@@ -2651,14 +2672,14 @@ Type Declaration (Class)
|
||||
|
||||
BEGIN_CLASS_MEMBER(GuiListViewBase)
|
||||
CLASS_MEMBER_BASE(GuiSelectableListControl)
|
||||
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2(GuiListViewBase, GuiListControl::IItemProvider*, itemProvider)
|
||||
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2(GuiListViewBase, list::IItemProvider*, itemProvider)
|
||||
|
||||
CLASS_MEMBER_GUIEVENT(ColumnClicked)
|
||||
END_CLASS_MEMBER(GuiListViewBase)
|
||||
|
||||
BEGIN_CLASS_MEMBER(GuiVirtualListView)
|
||||
CLASS_MEMBER_BASE(GuiListViewBase)
|
||||
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiVirtualListView, GuiListControl::IItemProvider*, itemProvider)
|
||||
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiVirtualListView, list::IItemProvider*, itemProvider)
|
||||
|
||||
CLASS_MEMBER_PROPERTY_FAST(View)
|
||||
END_CLASS_MEMBER(GuiVirtualListView)
|
||||
@@ -3030,7 +3051,7 @@ Type Declaration (Class)
|
||||
|
||||
BEGIN_CLASS_MEMBER(GuiVirtualDataGrid)
|
||||
CLASS_MEMBER_BASE(GuiVirtualListView)
|
||||
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiVirtualDataGrid, GuiListControl::IItemProvider*, itemProvider)
|
||||
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiVirtualDataGrid, list::IItemProvider*, itemProvider)
|
||||
|
||||
CLASS_MEMBER_PROPERTY_GUIEVENT_READONLY_FAST(SelectedCell)
|
||||
CLASS_MEMBER_PROPERTY_READONLY_FAST(ItemProvider)
|
||||
@@ -3875,6 +3896,12 @@ Type Declaration (Class)
|
||||
CLASS_MEMBER_PROPERTY_FAST(DateLocale)
|
||||
CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Date)
|
||||
CLASS_MEMBER_PROPERTY_FAST(Font)
|
||||
CLASS_MEMBER_PROPERTY_READONLY_FAST(YearCombo)
|
||||
CLASS_MEMBER_PROPERTY_READONLY_FAST(MonthCombo)
|
||||
CLASS_MEMBER_PROPERTY_READONLY_FAST(DayRows)
|
||||
CLASS_MEMBER_PROPERTY_READONLY_FAST(DayColumns)
|
||||
CLASS_MEMBER_METHOD(GetDayButton, { L"row" _ L"column" })
|
||||
CLASS_MEMBER_METHOD(GetDateOfDayButton, { L"row" _ L"column" })
|
||||
END_CLASS_MEMBER(GuiCommonDatePickerLook)
|
||||
|
||||
BEGIN_CLASS_MEMBER(GuiCommonScrollViewLook)
|
||||
|
||||
+14
-10
@@ -374,9 +374,9 @@ Type List (Controls)
|
||||
F(presentation::controls::GuiSaveFileDialog)\
|
||||
F(presentation::controls::GuiSelectableButton::GroupController)\
|
||||
F(presentation::controls::GuiSelectableButton::MutexGroupController)\
|
||||
F(presentation::controls::GuiListControl::IItemProviderCallback)\
|
||||
F(presentation::controls::list::IItemProviderCallback)\
|
||||
F(presentation::controls::list::IItemProvider)\
|
||||
F(presentation::controls::GuiListControl::IItemArrangerCallback)\
|
||||
F(presentation::controls::GuiListControl::IItemProvider)\
|
||||
F(presentation::controls::GuiListControl::EnsureItemVisibleResult)\
|
||||
F(presentation::controls::GuiListControl::IItemArranger)\
|
||||
F(presentation::controls::list::ItemProviderBase)\
|
||||
@@ -443,6 +443,10 @@ Type List (Controls)
|
||||
F(presentation::controls::list::DataReverseSorter)\
|
||||
F(presentation::controls::list::DataColumn)\
|
||||
F(presentation::controls::list::DataProvider)\
|
||||
F(presentation::controls::GuiBindableTextList::ItemSource)\
|
||||
F(presentation::controls::GuiBindableListView::ItemSource)\
|
||||
F(presentation::controls::GuiBindableTreeView::ItemSourceNode)\
|
||||
F(presentation::controls::GuiBindableTreeView::ItemSource)\
|
||||
|
||||
#define GUIREFLECTIONCONTROLS_CLASS_TYPELIST(F)\
|
||||
F(presentation::controls::GuiControl)\
|
||||
@@ -784,9 +788,9 @@ Interface Proxy (Compositions)
|
||||
Interface Proxy (Controls)
|
||||
***********************************************************************/
|
||||
|
||||
BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(presentation::controls::GuiListControl::IItemProviderCallback)
|
||||
BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(presentation::controls::list::IItemProviderCallback)
|
||||
|
||||
void OnAttached(presentation::controls::GuiListControl::IItemProvider* provider)override
|
||||
void OnAttached(presentation::controls::list::IItemProvider* provider)override
|
||||
{
|
||||
INVOKE_INTERFACE_PROXY(OnAttached, provider);
|
||||
}
|
||||
@@ -797,14 +801,14 @@ Interface Proxy (Controls)
|
||||
}
|
||||
END_INTERFACE_PROXY(presentation::controls::GuiListControl::IItemProviderCallback)
|
||||
|
||||
BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(presentation::controls::GuiListControl::IItemProvider)
|
||||
BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(presentation::controls::list::IItemProvider)
|
||||
|
||||
bool AttachCallback(presentation::controls::GuiListControl::IItemProviderCallback* value)override
|
||||
bool AttachCallback(presentation::controls::list::IItemProviderCallback* value)override
|
||||
{
|
||||
INVOKEGET_INTERFACE_PROXY(AttachCallback, value);
|
||||
}
|
||||
|
||||
bool DetachCallback(presentation::controls::GuiListControl::IItemProviderCallback* value)override
|
||||
bool DetachCallback(presentation::controls::list::IItemProviderCallback* value)override
|
||||
{
|
||||
INVOKEGET_INTERFACE_PROXY(DetachCallback, value);
|
||||
}
|
||||
@@ -846,7 +850,7 @@ Interface Proxy (Controls)
|
||||
END_INTERFACE_PROXY(presentation::controls::GuiListControl::IItemProvider)
|
||||
|
||||
BEGIN_INTERFACE_PROXY_SHAREDPTR(presentation::controls::GuiListControl::IItemArranger,
|
||||
presentation::controls::GuiListControl::IItemProviderCallback
|
||||
presentation::controls::list::IItemProviderCallback
|
||||
)
|
||||
|
||||
void AttachListControl(presentation::controls::GuiListControl* value)override
|
||||
@@ -1103,7 +1107,7 @@ Interface Proxy (Controls)
|
||||
|
||||
BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(presentation::controls::list::IDataGridContext)
|
||||
|
||||
presentation::controls::GuiListControl::IItemProvider* GetItemProvider()override
|
||||
presentation::controls::list::IItemProvider* GetItemProvider()override
|
||||
{
|
||||
INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetItemProvider);
|
||||
}
|
||||
@@ -1170,7 +1174,7 @@ Interface Proxy (Controls)
|
||||
|
||||
BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(presentation::controls::list::IDataProcessorCallback)
|
||||
|
||||
presentation::controls::GuiListControl::IItemProvider* GetItemProvider()override
|
||||
presentation::controls::list::IItemProvider* GetItemProvider()override
|
||||
{
|
||||
INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetItemProvider);
|
||||
}
|
||||
|
||||
+2912
-2757
File diff suppressed because one or more lines are too long
+979
-900
File diff suppressed because it is too large
Load Diff
@@ -154,12 +154,16 @@ namespace vl
|
||||
IMPL_CPP_TYPE_INFO(darkskin::ToolstripButtonTemplateConstructor)
|
||||
IMPL_CPP_TYPE_INFO(darkskin::ToolstripDropdownButtonTemplate)
|
||||
IMPL_CPP_TYPE_INFO(darkskin::ToolstripDropdownButtonTemplateConstructor)
|
||||
IMPL_CPP_TYPE_INFO(darkskin::ToolstripInMenuTemplate)
|
||||
IMPL_CPP_TYPE_INFO(darkskin::ToolstripInMenuTemplateConstructor)
|
||||
IMPL_CPP_TYPE_INFO(darkskin::ToolstripMenuTemplate)
|
||||
IMPL_CPP_TYPE_INFO(darkskin::ToolstripMenuTemplateConstructor)
|
||||
IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitArrowTemplate)
|
||||
IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitArrowTemplateConstructor)
|
||||
IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitButtonTemplate)
|
||||
IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitButtonTemplateConstructor)
|
||||
IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitterInMenuTemplate)
|
||||
IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitterInMenuTemplateConstructor)
|
||||
IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitterTemplate)
|
||||
IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitterTemplateConstructor)
|
||||
IMPL_CPP_TYPE_INFO(darkskin::ToolstripTemplate)
|
||||
@@ -1365,6 +1369,21 @@ namespace vl
|
||||
CLASS_MEMBER_FIELD(self)
|
||||
END_CLASS_MEMBER(::darkskin::ToolstripDropdownButtonTemplateConstructor)
|
||||
|
||||
BEGIN_CLASS_MEMBER(::darkskin::ToolstripInMenuTemplate)
|
||||
CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate)
|
||||
CLASS_MEMBER_BASE(::darkskin::ToolstripInMenuTemplateConstructor)
|
||||
CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripInMenuTemplate*(), NO_PARAMETER)
|
||||
END_CLASS_MEMBER(::darkskin::ToolstripInMenuTemplate)
|
||||
|
||||
BEGIN_CLASS_MEMBER(::darkskin::ToolstripInMenuTemplateConstructor)
|
||||
CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
|
||||
CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ToolstripInMenuTemplateConstructor>(), NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(__vwsn_darkskin_ToolstripInMenuTemplate_Initialize, { L"__vwsn_this_" })
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_0)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_1)
|
||||
CLASS_MEMBER_FIELD(container)
|
||||
END_CLASS_MEMBER(::darkskin::ToolstripInMenuTemplateConstructor)
|
||||
|
||||
BEGIN_CLASS_MEMBER(::darkskin::ToolstripMenuTemplate)
|
||||
CLASS_MEMBER_BASE(::vl::presentation::templates::GuiMenuTemplate)
|
||||
CLASS_MEMBER_BASE(::darkskin::ToolstripMenuTemplateConstructor)
|
||||
@@ -1423,6 +1442,22 @@ namespace vl
|
||||
CLASS_MEMBER_FIELD(self)
|
||||
END_CLASS_MEMBER(::darkskin::ToolstripSplitButtonTemplateConstructor)
|
||||
|
||||
BEGIN_CLASS_MEMBER(::darkskin::ToolstripSplitterInMenuTemplate)
|
||||
CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate)
|
||||
CLASS_MEMBER_BASE(::darkskin::ToolstripSplitterInMenuTemplateConstructor)
|
||||
CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripSplitterInMenuTemplate*(), NO_PARAMETER)
|
||||
END_CLASS_MEMBER(::darkskin::ToolstripSplitterInMenuTemplate)
|
||||
|
||||
BEGIN_CLASS_MEMBER(::darkskin::ToolstripSplitterInMenuTemplateConstructor)
|
||||
CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
|
||||
CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ToolstripSplitterInMenuTemplateConstructor>(), NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(__vwsn_darkskin_ToolstripSplitterInMenuTemplate_Initialize, { L"__vwsn_this_" })
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_0)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_1)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_2)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_3)
|
||||
END_CLASS_MEMBER(::darkskin::ToolstripSplitterInMenuTemplateConstructor)
|
||||
|
||||
BEGIN_CLASS_MEMBER(::darkskin::ToolstripSplitterTemplate)
|
||||
CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate)
|
||||
CLASS_MEMBER_BASE(::darkskin::ToolstripSplitterTemplateConstructor)
|
||||
@@ -1693,12 +1728,16 @@ namespace vl
|
||||
ADD_TYPE_INFO(::darkskin::ToolstripButtonTemplateConstructor)
|
||||
ADD_TYPE_INFO(::darkskin::ToolstripDropdownButtonTemplate)
|
||||
ADD_TYPE_INFO(::darkskin::ToolstripDropdownButtonTemplateConstructor)
|
||||
ADD_TYPE_INFO(::darkskin::ToolstripInMenuTemplate)
|
||||
ADD_TYPE_INFO(::darkskin::ToolstripInMenuTemplateConstructor)
|
||||
ADD_TYPE_INFO(::darkskin::ToolstripMenuTemplate)
|
||||
ADD_TYPE_INFO(::darkskin::ToolstripMenuTemplateConstructor)
|
||||
ADD_TYPE_INFO(::darkskin::ToolstripSplitArrowTemplate)
|
||||
ADD_TYPE_INFO(::darkskin::ToolstripSplitArrowTemplateConstructor)
|
||||
ADD_TYPE_INFO(::darkskin::ToolstripSplitButtonTemplate)
|
||||
ADD_TYPE_INFO(::darkskin::ToolstripSplitButtonTemplateConstructor)
|
||||
ADD_TYPE_INFO(::darkskin::ToolstripSplitterInMenuTemplate)
|
||||
ADD_TYPE_INFO(::darkskin::ToolstripSplitterInMenuTemplateConstructor)
|
||||
ADD_TYPE_INFO(::darkskin::ToolstripSplitterTemplate)
|
||||
ADD_TYPE_INFO(::darkskin::ToolstripSplitterTemplateConstructor)
|
||||
ADD_TYPE_INFO(::darkskin::ToolstripTemplate)
|
||||
|
||||
@@ -167,12 +167,16 @@ namespace vl
|
||||
DECL_TYPE_INFO(::darkskin::ToolstripButtonTemplateConstructor)
|
||||
DECL_TYPE_INFO(::darkskin::ToolstripDropdownButtonTemplate)
|
||||
DECL_TYPE_INFO(::darkskin::ToolstripDropdownButtonTemplateConstructor)
|
||||
DECL_TYPE_INFO(::darkskin::ToolstripInMenuTemplate)
|
||||
DECL_TYPE_INFO(::darkskin::ToolstripInMenuTemplateConstructor)
|
||||
DECL_TYPE_INFO(::darkskin::ToolstripMenuTemplate)
|
||||
DECL_TYPE_INFO(::darkskin::ToolstripMenuTemplateConstructor)
|
||||
DECL_TYPE_INFO(::darkskin::ToolstripSplitArrowTemplate)
|
||||
DECL_TYPE_INFO(::darkskin::ToolstripSplitArrowTemplateConstructor)
|
||||
DECL_TYPE_INFO(::darkskin::ToolstripSplitButtonTemplate)
|
||||
DECL_TYPE_INFO(::darkskin::ToolstripSplitButtonTemplateConstructor)
|
||||
DECL_TYPE_INFO(::darkskin::ToolstripSplitterInMenuTemplate)
|
||||
DECL_TYPE_INFO(::darkskin::ToolstripSplitterInMenuTemplateConstructor)
|
||||
DECL_TYPE_INFO(::darkskin::ToolstripSplitterTemplate)
|
||||
DECL_TYPE_INFO(::darkskin::ToolstripSplitterTemplateConstructor)
|
||||
DECL_TYPE_INFO(::darkskin::ToolstripTemplate)
|
||||
|
||||
+86
-36
@@ -1299,6 +1299,7 @@ namespace vl
|
||||
namespace unittest
|
||||
{
|
||||
using namespace vl::console;
|
||||
using namespace vl::collections;
|
||||
|
||||
/***********************************************************************
|
||||
UnitTest
|
||||
@@ -1435,35 +1436,54 @@ UnitTest
|
||||
|
||||
int UnitTest::PrintUsages()
|
||||
{
|
||||
PrintMessage(L"Usage: [/D | /R]", MessageKind::Error);
|
||||
PrintMessage(L"Usage: [/D | /R] {/F:TestFile}", MessageKind::Error);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int UnitTest::RunAndDisposeTests(Nullable<WString> option)
|
||||
int UnitTest::RunAndDisposeTests(const collections::Array<WString>& options)
|
||||
{
|
||||
if (option)
|
||||
bool unrecognized = false;
|
||||
bool _D = false;
|
||||
bool _R = false;
|
||||
List<AString> _Fs;
|
||||
|
||||
for (auto&& option : From(options))
|
||||
{
|
||||
if (option.Value() == L"/D")
|
||||
if (option == L"/D")
|
||||
{
|
||||
suppressFailure = false;
|
||||
_D = true;
|
||||
}
|
||||
else if (option.Value() == L"/R")
|
||||
else if (option == L"/R")
|
||||
{
|
||||
suppressFailure = true;
|
||||
_R = true;
|
||||
}
|
||||
else if (option.Length() > 3 && option.Left(3) == L"/F:")
|
||||
{
|
||||
_Fs.Add(wtoa(option.Sub(3, option.Length() - 3)));
|
||||
}
|
||||
else
|
||||
{
|
||||
return PrintUsages();
|
||||
unrecognized = true;
|
||||
}
|
||||
}
|
||||
else if (IsDebuggerAttached())
|
||||
|
||||
if (unrecognized || (_D && _R))
|
||||
{
|
||||
return PrintUsages();
|
||||
}
|
||||
|
||||
if (_D)
|
||||
{
|
||||
suppressFailure = false;
|
||||
}
|
||||
else
|
||||
else if (_R)
|
||||
{
|
||||
suppressFailure = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
suppressFailure = !IsDebuggerAttached();
|
||||
}
|
||||
|
||||
{
|
||||
UnitTestContext context;
|
||||
@@ -1485,13 +1505,47 @@ UnitTest
|
||||
auto current = testHead;
|
||||
while (current)
|
||||
{
|
||||
bool skipped = false;
|
||||
context.failed = false;
|
||||
PrintMessage(atow(AString::Unmanaged(current->fileName)), MessageKind::File);
|
||||
context.indentation = L" ";
|
||||
ExecuteAndSuppressFailure(current->testProc);
|
||||
if (!testContext->failed) passedFiles++;
|
||||
totalFiles++;
|
||||
context.indentation = L"";
|
||||
if (_Fs.Count() > 0)
|
||||
{
|
||||
skipped = true;
|
||||
for (auto fileName : From(_Fs))
|
||||
{
|
||||
if (current->fileName == fileName)
|
||||
{
|
||||
skipped = false;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
vint len = (vint)strlen(current->fileName);
|
||||
if (len > fileName.Length())
|
||||
{
|
||||
char delimiter = current->fileName[len - fileName.Length() - 1];
|
||||
if ((delimiter == L'/' || delimiter == L'\\') && current->fileName + (len - fileName.Length()) == fileName)
|
||||
{
|
||||
skipped = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (skipped)
|
||||
{
|
||||
PrintMessage(atow(AString::Unmanaged(current->fileName)) + WString::Unmanaged(L" [SKIPPED]"), MessageKind::File);
|
||||
}
|
||||
else
|
||||
{
|
||||
PrintMessage(atow(AString::Unmanaged(current->fileName)), MessageKind::File);
|
||||
context.indentation = L" ";
|
||||
ExecuteAndSuppressFailure(current->testProc);
|
||||
if (!testContext->failed) passedFiles++;
|
||||
totalFiles++;
|
||||
context.indentation = L"";
|
||||
}
|
||||
current = current->next;
|
||||
}
|
||||
|
||||
@@ -1506,39 +1560,35 @@ UnitTest
|
||||
|
||||
int UnitTest::RunAndDisposeTests(int argc, wchar_t* argv[])
|
||||
{
|
||||
if (argc < 3)
|
||||
if (argc < 2)
|
||||
{
|
||||
if (argc == 2)
|
||||
{
|
||||
return RunAndDisposeTests({ argv[1] });
|
||||
}
|
||||
else
|
||||
{
|
||||
return RunAndDisposeTests({});
|
||||
}
|
||||
return RunAndDisposeTests({});
|
||||
}
|
||||
else
|
||||
{
|
||||
return PrintUsages();
|
||||
Array<WString> options(argc - 1);
|
||||
for (int i = 1; i < argc; i++)
|
||||
{
|
||||
options[i - 1] = WString::Unmanaged(argv[i]);
|
||||
}
|
||||
return RunAndDisposeTests(options);
|
||||
}
|
||||
}
|
||||
|
||||
int UnitTest::RunAndDisposeTests(int argc, char* argv[])
|
||||
{
|
||||
if (argc < 3)
|
||||
if (argc < 2)
|
||||
{
|
||||
if (argc == 2)
|
||||
{
|
||||
return RunAndDisposeTests({ atow(argv[1]) });
|
||||
}
|
||||
else
|
||||
{
|
||||
return RunAndDisposeTests({});
|
||||
}
|
||||
return RunAndDisposeTests({});
|
||||
}
|
||||
else
|
||||
{
|
||||
return PrintUsages();
|
||||
Array<WString> options(argc - 1);
|
||||
for (int i = 1; i < argc; i++)
|
||||
{
|
||||
options[i - 1] = atow(argv[i]);
|
||||
}
|
||||
return RunAndDisposeTests(options);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -9269,7 +9269,7 @@ namespace vl
|
||||
protected:
|
||||
static bool IsDebuggerAttached();
|
||||
static int PrintUsages();
|
||||
static int RunAndDisposeTests(Nullable<WString> option);
|
||||
static int RunAndDisposeTests(const collections::Array<WString>& options);
|
||||
|
||||
public:
|
||||
UnitTest() = delete;
|
||||
|
||||
@@ -7425,11 +7425,11 @@ InterfaceProxy::Invoke
|
||||
|
||||
#define INVOKEGET_INTERFACE_PROXY(METHODNAME, ...)\
|
||||
PREPARE_INVOKE_INTERFACE_PROXY(METHODNAME, __VA_ARGS__)\
|
||||
return UnboxValue<decltype(METHODNAME(__VA_ARGS__))>(proxy->Invoke(_interface_proxy_methodInfo, IValueList::Create(collections::From((collections::Array<Value>&)(Value_xs(), __VA_ARGS__)))))
|
||||
return UnboxParameter<decltype(METHODNAME(__VA_ARGS__))>(proxy->Invoke(_interface_proxy_methodInfo, IValueList::Create(collections::From((collections::Array<Value>&)(Value_xs(), __VA_ARGS__))))).Ref()
|
||||
|
||||
#define INVOKEGET_INTERFACE_PROXY_NOPARAMS(METHODNAME)\
|
||||
PREPARE_INVOKE_INTERFACE_PROXY(METHODNAME)\
|
||||
return UnboxValue<decltype(METHODNAME())>(proxy->Invoke(_interface_proxy_methodInfo, IValueList::Create()))
|
||||
return UnboxParameter<decltype(METHODNAME())>(proxy->Invoke(_interface_proxy_methodInfo, IValueList::Create())).Ref()
|
||||
|
||||
/***********************************************************************
|
||||
Enum
|
||||
|
||||
+1
-1
@@ -370,7 +370,7 @@ Regex
|
||||
/// <li><b>(=regex)</b>: The prefix of the following text should match the regex, but it is not counted in the whole match <b>(DFA incompatible)</b></li>
|
||||
/// <li><b>(!regex)</b>: Any prefix of the following text should not match the regex, and it is not counted in the whole match <b>(DFA incompatible)</b></li>
|
||||
/// <li><b>(<#name>regex)</b>: Name the regex "name", and it applies here</li>
|
||||
/// <li><b>(<&name>)</b>: Copy the named regex "name" here and apply</li>
|
||||
/// <li><b>(<&name>)</b>: Copy the named regex "name" here and apply</li>
|
||||
/// </ul>
|
||||
/// </li>
|
||||
/// </ul>
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user