ctkDoubleRangeSliderTest1.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. /*=========================================================================
  2. Library: CTK
  3. Copyright (c) Kitware Inc.
  4. All rights reserved.
  5. Distributed under a BSD License. See LICENSE.txt file.
  6. This software is distributed "AS IS" WITHOUT ANY WARRANTY; without even
  7. the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  8. See the above copyright notice for more information.
  9. =========================================================================*/
  10. // Qt includes
  11. #include <QApplication>
  12. #include <QString>
  13. // CTK includes
  14. #include "ctkDoubleRangeSlider.h"
  15. // STD includes
  16. #include <cstdlib>
  17. #include <iostream>
  18. //-----------------------------------------------------------------------------
  19. bool checkSlider(const ctkDoubleRangeSlider& slider)
  20. {
  21. return slider.minimum() <= slider.minimumValue() &&
  22. slider.minimumValue() <= slider.maximumValue() &&
  23. slider.maximumValue() <= slider.maximum();
  24. }
  25. //-----------------------------------------------------------------------------
  26. bool checkSlider(const ctkDoubleRangeSlider& slider,
  27. double min, double minVal, double maxVal, double max)
  28. {
  29. return qFuzzyCompare(slider.minimum(), min) &&
  30. qFuzzyCompare(slider.minimumValue(), minVal) &&
  31. qFuzzyCompare(slider.maximumValue(), maxVal) &&
  32. qFuzzyCompare(slider.maximum(), max);
  33. }
  34. //-----------------------------------------------------------------------------
  35. bool checkSlider(const ctkDoubleRangeSlider& slider,
  36. double min, double minVal, double maxVal, double max, double minPos, double maxPos)
  37. {
  38. return qFuzzyCompare(slider.minimum(), min) &&
  39. qFuzzyCompare(slider.minimumValue(), minVal) &&
  40. qFuzzyCompare(slider.maximumValue(), maxVal) &&
  41. qFuzzyCompare(slider.maximum(), max) &&
  42. qFuzzyCompare(slider.minimumPosition(), minPos) &&
  43. qFuzzyCompare(slider.maximumPosition(), maxPos);
  44. }
  45. //-----------------------------------------------------------------------------
  46. int ctkDoubleRangeSliderTest1(int argc, char * argv [] )
  47. {
  48. QApplication app(argc, argv);
  49. ctkDoubleRangeSlider slider;
  50. if (!(slider.minimum() <= slider.minimumValue() &&
  51. slider.minimumValue() <= slider.maximumValue() &&
  52. slider.maximumValue() <= slider.maximum() &&
  53. slider.minimum() <= slider.minimumPosition() &&
  54. slider.minimumPosition() <= slider.maximumPosition() &&
  55. slider.maximumPosition() <= slider.maximum()))
  56. {
  57. std::cerr << "ctkDoubleRangeSlider:: 1) "
  58. << slider.minimum() << " "
  59. << slider.minimumValue() << " "
  60. << slider.maximumValue() << " "
  61. << slider.maximum() << std::endl;
  62. std::cerr << "ctkDoubleRangeSlider:: 1) "
  63. << slider.minimumPosition() << " "
  64. << slider.maximumPosition() << std::endl;
  65. return EXIT_FAILURE;
  66. }
  67. slider.setMinimum(10.10);
  68. slider.setMaximum(3999.99);
  69. slider.setValues(40.1, 20.4);
  70. if (!checkSlider(slider, 10.10, 20.4, 40.1, 3999.99, 20.4, 40.1))
  71. {
  72. std::cerr << "ctkDoubleRangeSlider:: 2) "
  73. << slider.minimum() << " "
  74. << slider.minimumValue() << " "
  75. << slider.maximumValue() << " "
  76. << slider.maximum() << std::endl;
  77. std::cerr << "ctkDoubleRangeSlider:: 2) "
  78. << slider.minimumPosition() << " "
  79. << slider.maximumPosition() << std::endl;
  80. return EXIT_FAILURE;
  81. }
  82. slider.setValues(700.4, 20.99);
  83. if (!checkSlider(slider, 10.1, 20.99, 700.4, 3999.99, 20.99, 700.4))
  84. {
  85. std::cerr << "ctkDoubleRangeSlider:: 3) "
  86. << slider.minimum() << " "
  87. << slider.minimumValue() << " "
  88. << slider.maximumValue() << " "
  89. << slider.maximum() << std::endl;
  90. std::cerr << "ctkDoubleRangeSlider:: 3) "
  91. << slider.minimumPosition() << " "
  92. << slider.maximumPosition() << std::endl;
  93. return EXIT_FAILURE;
  94. }
  95. slider.setValues(800, 900);
  96. if (!checkSlider(slider, 10.1, 800, 900, 3999.99, 800, 900))
  97. {
  98. std::cerr << "ctkDoubleRangeSlider:: 4) "
  99. << slider.minimum() << " "
  100. << slider.minimumValue() << " "
  101. << slider.maximumValue() << " "
  102. << slider.maximum() << std::endl;
  103. std::cerr << "ctkDoubleRangeSlider:: 4) "
  104. << slider.minimumPosition() << " "
  105. << slider.maximumPosition() << std::endl;
  106. return EXIT_FAILURE;
  107. }
  108. slider.setValues(5000, 6000);
  109. if (!checkSlider(slider, 10.1, 3999.99, 3999.99, 3999.99, 3999.99, 3999.99))
  110. {
  111. std::cerr << "ctkDoubleRangeSlider:: 5) "
  112. << slider.minimum() << " "
  113. << slider.minimumValue() << " "
  114. << slider.maximumValue() << " "
  115. << slider.maximum() << std::endl;
  116. std::cerr << "ctkDoubleRangeSlider:: 5) "
  117. << slider.minimumPosition() << " "
  118. << slider.maximumPosition() << std::endl;
  119. return EXIT_FAILURE;
  120. }
  121. slider.setRange(-15.21, 25.49999);
  122. if (!checkSlider(slider, -15.21, 25.49999, 25.49999, 25.49999, 25.49999, 25.49999))
  123. {
  124. std::cerr << "ctkDoubleRangeSlider:: 6) "
  125. << slider.minimum() << " "
  126. << slider.minimumValue() << " "
  127. << slider.maximumValue() << " "
  128. << slider.maximum() << std::endl;
  129. return EXIT_FAILURE;
  130. }
  131. // nothing happen yet but it would be nice if it moves the 2 values at
  132. // the same time.
  133. slider.triggerAction(QAbstractSlider::SliderSingleStepSub);
  134. if (!checkSlider(slider, -15.21, 25.49999, 25.49999, 25.49999, 25.49999, 25.49999))
  135. {
  136. std::cerr << "ctkDoubleRangeSlider:: 7) "
  137. << slider.minimum() << " "
  138. << slider.minimumValue() << " "
  139. << slider.maximumValue() << " "
  140. << slider.maximum() << std::endl;
  141. std::cerr << "ctkDoubleRangeSlider:: 7) "
  142. << slider.minimumPosition() << " "
  143. << slider.maximumPosition() << std::endl;
  144. return EXIT_FAILURE;
  145. }
  146. slider.setMaximumValue(10.2);
  147. if (!checkSlider(slider, -15.21, 10.2, 10.2, 25.49999, 10.2, 10.2))
  148. {
  149. std::cerr << "ctkDoubleRangeSlider:: 8) "
  150. << slider.minimum() << " "
  151. << slider.minimumValue() << " "
  152. << slider.maximumValue() << " "
  153. << slider.maximum() << std::endl;
  154. std::cerr << "ctkDoubleRangeSlider:: 8) "
  155. << slider.minimumPosition() << " "
  156. << slider.maximumPosition() << std::endl;
  157. return EXIT_FAILURE;
  158. }
  159. slider.setMinimumValue(17.7777);
  160. if (!checkSlider(slider, -15.21, 17.7777, 17.7777, 25.49999, 17.7777, 17.7777))
  161. {
  162. std::cerr << "ctkDoubleRangeSlider:: 9) "
  163. << slider.minimum() << " "
  164. << slider.minimumValue() << " "
  165. << slider.maximumValue() << " "
  166. << slider.maximum() << std::endl;
  167. std::cerr << "ctkDoubleRangeSlider:: 9) "
  168. << slider.minimumPosition() << " "
  169. << slider.maximumPosition() << std::endl;
  170. return EXIT_FAILURE;
  171. }
  172. slider.setMinimumValue(-20);
  173. if (!checkSlider(slider, -15.21, -15.21, 17.7777, 25.49999, -15.21, 17.7777))
  174. {
  175. std::cerr << "ctkDoubleRangeSlider:: 10) "
  176. << slider.minimum() << " "
  177. << slider.minimumValue() << " "
  178. << slider.maximumValue() << " "
  179. << slider.maximum() << std::endl;
  180. std::cerr << "ctkDoubleRangeSlider:: 10) "
  181. << slider.minimumPosition() << " "
  182. << slider.maximumPosition() << std::endl;
  183. return EXIT_FAILURE;
  184. }
  185. slider.setSingleStep(0.15);
  186. if (!checkSlider(slider, -15.21, -15.21, 17.7777, 25.49999, -15.21, 17.7777))
  187. {
  188. std::cerr << "ctkDoubleRangeSlider:: 10.5) "
  189. << slider.minimum() << " "
  190. << slider.minimumValue() << " "
  191. << slider.maximumValue() << " "
  192. << slider.maximum() << std::endl;
  193. std::cerr << "ctkDoubleRangeSlider:: 10.5) "
  194. << slider.minimumPosition() << " "
  195. << slider.maximumPosition() << std::endl;
  196. return EXIT_FAILURE;
  197. }
  198. slider.setSingleStep(0.33);
  199. if (!checkSlider(slider, -15.21, -15.21, 17.7777, 25.49999, -15.21, 17.7777))
  200. {
  201. std::cerr << "ctkDoubleRangeSlider:: 11) "
  202. << slider.minimum() << " "
  203. << slider.minimumValue() << " "
  204. << slider.maximumValue() << " "
  205. << slider.maximum() << std::endl;
  206. std::cerr << "ctkDoubleRangeSlider:: 11) "
  207. << slider.minimumPosition() << " "
  208. << slider.maximumPosition() << std::endl;
  209. return EXIT_FAILURE;
  210. }
  211. slider.setMinimumValue(-15.205);
  212. if (!checkSlider(slider, -15.21, -15.205, 17.7777, 25.49999, -15.205, 17.7777))
  213. {
  214. std::cerr << "ctkDoubleRangeSlider:: 12) "
  215. << slider.minimum() << " "
  216. << slider.minimumValue() << " "
  217. << slider.maximumValue() << " "
  218. << slider.maximum() << std::endl;
  219. std::cerr << "ctkDoubleRangeSlider:: 12) "
  220. << slider.minimumPosition() << " "
  221. << slider.maximumPosition() << std::endl;
  222. return EXIT_FAILURE;
  223. }
  224. slider.setSingleStep(1.);
  225. if (!checkSlider(slider, -15.21, -15.205, 17.7777, 25.49999, -15.205, 17.7777))
  226. {
  227. std::cerr << "ctkDoubleRangeSlider:: 13) "
  228. << slider.minimum() << " "
  229. << slider.minimumValue() << " "
  230. << slider.maximumValue() << " "
  231. << slider.maximum() << std::endl;
  232. std::cerr << "ctkDoubleRangeSlider:: 13) "
  233. << slider.minimumPosition() << " "
  234. << slider.maximumPosition() << std::endl;
  235. return EXIT_FAILURE;
  236. }
  237. slider.setSingleStep(0.01);
  238. if (!checkSlider(slider, -15.21, -15.205, 17.7777, 25.49999, -15.205, 17.7777))
  239. {
  240. std::cerr << "ctkDoubleRangeSlider:: 14) "
  241. << slider.minimum() << " "
  242. << slider.minimumValue() << " "
  243. << slider.maximumValue() << " "
  244. << slider.maximum() << std::endl;
  245. std::cerr << "ctkDoubleRangeSlider:: 14) "
  246. << slider.minimumPosition() << " "
  247. << slider.maximumPosition() << std::endl;
  248. return EXIT_FAILURE;
  249. }
  250. // FIXME
  251. //slider.setPositions(0.1, 20.5);
  252. // if (!checkSlider(slider, -15.21, 0.1, 20.5, 25.49999, 0.1, 20.5))
  253. // {
  254. // std::cerr << "ctkDoubleRangeSlider:: 15) "
  255. // << slider.minimum() << " "
  256. // << slider.minimumValue() << " "
  257. // << slider.maximumValue() << " "
  258. // << slider.maximum() << std::endl;
  259. // std::cerr << "ctkDoubleRangeSlider:: 15) "
  260. // << slider.minimumPosition() << " "
  261. // << slider.maximumPosition() << std::endl;
  262. // return EXIT_FAILURE;
  263. // }
  264. // slider.setTracking(false);
  265. // slider.setPositions(0.123456, 20.123465);
  266. // if (!checkSlider(slider, -15.21, 0.1, 20.5, 25.49999, 0.123456, 20.123456))
  267. // {
  268. // std::cerr << "ctkDoubleRangeSlider:: 16) "
  269. // << slider.minimum() << " "
  270. // << slider.minimumValue() << " "
  271. // << slider.maximumValue() << " "
  272. // << slider.maximum() << std::endl;
  273. // std::cerr << "ctkDoubleRangeSlider:: 16) "
  274. // << slider.minimumPosition() << " "
  275. // << slider.maximumPosition() << std::endl;
  276. // return EXIT_FAILURE;
  277. // }
  278. return EXIT_SUCCESS;
  279. }