1 /*
2     SPDX-FileCopyrightText: 2018 Ralf Habacker <ralf.habacker@freenet.de>
3 
4     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
5 */
6 
7 #include "testlistpopupmenu.h"
8 
9 #include "associationwidgetpopupmenu.h"
10 #include "dialogspopupmenu.h"
11 #include "widgetbasepopupmenu.h"
12 #include "umllistviewpopupmenu.h"
13 #include "umlscenepopupmenu.h"
14 
15 #include "category.h"
16 #include "entity.h"
17 #include "classifier.h"
18 #include "instance.h"
19 
20 #include "associationwidget.h"
21 #include "categorywidget.h"
22 #include "classifierwidget.h"
23 #include "entitywidget.h"
24 
25 #include "folder.h"
26 #include "umllistview.h"
27 #include "umlscene.h"
28 #include "umlview.h"
29 
test_createWidgetsSingleSelect()30 void TestListPopupMenu::test_createWidgetsSingleSelect()
31 {
32     UMLFolder folder(QLatin1String("test"));
33     UMLView view(&folder);
34     UMLScene scene(&folder, &view);
35     QWidget qWidget;
36     for(int i = WidgetBase::wt_Min+1; i < WidgetBase::wt_Max; i++) {
37         WidgetBase::WidgetType type = static_cast<WidgetBase::WidgetType>(i);
38         WidgetBase *widget = 0;
39         if (type == WidgetBase::wt_Entity) {
40             widget = new EntityWidget(&scene, new UMLEntity("entity"));
41         } else if (type == WidgetBase::wt_Category) {
42             widget = new CategoryWidget(&scene, new UMLCategory("category"));
43         } else if (type == WidgetBase::wt_Class) {
44             widget = new ClassifierWidget(&scene, new UMLClassifier("classifier"));
45         } else if (type == WidgetBase::wt_Interface) {
46             widget = new ClassifierWidget(&scene, new UMLClassifier("instance"));
47             widget->setBaseType(type);
48         } else
49             widget = new WidgetBase(&scene, type);
50         WidgetBasePopupMenu popup(&qWidget, widget, false);
51         popup.dumpActions(WidgetBase::toString(type));
52     }
53 }
54 
test_createWidgetsMultiSelect()55 void TestListPopupMenu::test_createWidgetsMultiSelect()
56 {
57     UMLFolder folder(QLatin1String("test"));
58     UMLView view(&folder);
59     UMLScene scene(&folder, &view);
60     QWidget qWidget;
61     for(int i = WidgetBase::wt_Min+1; i < WidgetBase::wt_Max; i++) {
62         WidgetBase::WidgetType type = static_cast<WidgetBase::WidgetType>(i);
63         WidgetBase *widget = 0;
64         if (type == WidgetBase::wt_Entity) {
65             widget = new EntityWidget(&scene, new UMLEntity("entity"));
66         } else if (type == WidgetBase::wt_Category) {
67             widget = new CategoryWidget(&scene, new UMLCategory("category"));
68         } else if (type == WidgetBase::wt_Class) {
69             widget = new ClassifierWidget(&scene, new UMLClassifier("classifier"));
70         } else if (type == WidgetBase::wt_Interface) {
71             widget = new ClassifierWidget(&scene, new UMLClassifier("instance"));
72             widget->setBaseType(type);
73         } else
74             widget = new WidgetBase(&scene, type);
75         WidgetBasePopupMenu popupMulti(&qWidget, widget, true, type);
76         popupMulti.dumpActions(WidgetBase::toString(type));
77     }
78 }
79 
test_createAssociationWidget()80 void TestListPopupMenu::test_createAssociationWidget()
81 {
82     UMLFolder folder(QLatin1String("test"));
83     UMLView view(&folder);
84     UMLScene scene(&folder, &view);
85     QWidget qWidget;
86     UMLWidget widgetA(&scene, WidgetBase::wt_UMLWidget, 0), widgetB(&scene, WidgetBase::wt_UMLWidget, 0);
87     for (int i = Uml::AssociationType::Generalization; i < Uml::AssociationType::Reserved; ++i) {
88         Uml::AssociationType::Enum type = Uml::AssociationType::fromInt(i);
89         AssociationWidget *widget = AssociationWidget::create(&scene, &widgetA, type, &widgetB);
90         AssociationWidgetPopupMenu popup(&qWidget,type, widget);
91         popup.dumpActions(Uml::AssociationType::toString(type));
92     }
93 }
94 
test_createUMLScene()95 void TestListPopupMenu::test_createUMLScene()
96 {
97     UMLFolder folder(QLatin1String("test"));
98     UMLView view(&folder);
99     QWidget qWidget;
100     for(int i = Uml::DiagramType::Undefined+1; i < Uml::DiagramType::N_DIAGRAMTYPES; i++) {
101         Uml::DiagramType::Enum type = Uml::DiagramType::fromInt(i);
102         view.umlScene()->setType(type);
103         UMLScenePopupMenu popup(&qWidget, view.umlScene());
104         popup.dumpActions(Uml::DiagramType::toString(type));
105     }
106 }
107 
test_createUMLListview()108 void TestListPopupMenu::test_createUMLListview()
109 {
110     QWidget qWidget;
111     UMLObject object;
112     UMLCategory category;
113     UMLListView view;
114     for(int i = UMLListViewItem::ListViewType::lvt_Min+1; i < UMLListViewItem::ListViewType::lvt_Max; i++) {
115         UMLListViewItem::ListViewType type = static_cast<UMLListViewItem::ListViewType>(i);
116         UMLListViewItem item(&view, QLatin1String("test"), type);
117         item.setUMLObject(type == UMLListViewItem::ListViewType::lvt_Category ? &category : &object);
118         UMLListViewPopupMenu popup(&qWidget, &item);
119         popup.dumpActions(UMLListViewItem::toString(type));
120     }
121 }
122 
test_createMiscMenu()123 void TestListPopupMenu::test_createMiscMenu()
124 {
125     QWidget qWidget;
126     for(int i = DialogsPopupMenu::TriggerType::tt_Min+1; i < DialogsPopupMenu::TriggerType::tt_Max; i++) {
127         DialogsPopupMenu::TriggerType tt = static_cast<DialogsPopupMenu::TriggerType>(i);
128         DialogsPopupMenu popup(&qWidget, tt);
129         popup.dumpActions(DialogsPopupMenu::toString(tt));
130     }
131 }
132 
133 QTEST_MAIN(TestListPopupMenu)
134