# Proposal: Enable unit testing Kaleidoscopes core and client plugins by Dependency Inversion

**URL:** <https://community.keyboard.io/t/proposal-enable-unit-testing-kaleidoscopes-core-and-client-plugins-by-dependency-inversion/1245>\
**Category:** Kaleidoscope Internals\
**Created:** [March 12, 2018, 11:02pm UTC](https://community.keyboard.io/t/proposal-enable-unit-testing-kaleidoscopes-core-and-client-plugins-by-dependency-inversion/1245 "2018-03-12T23:02:09Z")\
**Posts on this page:** 1\
**Showing post:** 16

<div class="post-metadata">

**Author:** ![noseglasses](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/noseglasses/32/429_2.png) [@noseglasses](https://community.keyboard.io/u/noseglasses)\
**Post date:** [March 21, 2018, 10:24am UTC](https://community.keyboard.io/t/proposal-enable-unit-testing-kaleidoscopes-core-and-client-plugins-by-dependency-inversion/1245/16 "2018-03-21T10:24:01Z")

</div>

> [@kriber](#):
>
> As i very much want to use a modern IDE, i put about 2 days into getting the leidokos-CMake to build and generate projects and failed miserably both on linux and windows.

Leidokos-CMake was just released recently. It is build and tested automatically on [Windows](https://ci.appveyor.com/project/CapeLeidokos/Leidokos-CMake/branch/master), [MacOS and Linux](https://travis-ci.org/CapeLeidokos/Leidokos-CMake).  
You could contact me and ask for support. That way, I could improve the documentation where necessary to also provide a better experience for other users.

I definitely would prefer that to you writing that you _failed miserably_ ☹

> [@kriber](#):
>
> The most crucial point, for me personally, is using CMake (or whatever alternative) to generate projects for modern IDEs like MSVS or CLion with advanced navigation and refactoring features.

That’s another reason why Leidokos-CMake came to life. I doubt that there is a way to get this with wrapping Arduino-Builder in CMake. Many IDEs support CMake projects and allow to build individual targets or even object files. This information that must be made available by the build system to the IDE is only known to Arduino-Builder.  
Include directories are another (less) critical issue. IDEs’ code parsers must know where to look for includes for being able to parse and understand the overall code base. Most IDEs allow to specify include directories manually, though.

> [@kriber](#):
>
> As far as my searches go there seem to be several production quality projects simulating Arduino hardware. Some of those support custom PCB layouts (i googled for “Arduino Simulator”).

We had some discussions about this topic [here](https://community.keyboard.io/t/model-01-simulator/494).

---

_[View the full topic](https://community.keyboard.io/t/proposal-enable-unit-testing-kaleidoscopes-core-and-client-plugins-by-dependency-inversion/1245)._
