{"id":251,"date":"2016-04-17T15:16:28","date_gmt":"2016-04-17T13:16:28","guid":{"rendered":"http:\/\/tos.acoustic-velocity.com\/?p=251"},"modified":"2021-10-24T12:05:27","modified_gmt":"2021-10-24T10:05:27","slug":"gold-plated-tests-and-breaking-the-256-character-limit","status":"publish","type":"post","link":"https:\/\/acoustic-velocity.com\/?p=251","title":{"rendered":"Gold plated tests and breaking the 256 character limit"},"content":{"rendered":"<p>Last time I was talking a bit about the test framework I am setting up. I actually became a bit obsessive with this in the last weeks and spent a lot of effort to get it to a point where it fulfils everything I need. Meanwhile I am at a point where tests are run every time something is submitted to the version control system. The result can be nicely seen on a html page and a history of the last 20 tests is visible. Log files for passed and failed tests are stored and can be accessed from the html page. All in an eye pleasant view, <del>slightly<\/del>\u00a0 heavily inspired by a professional commercial CI system (is anyone able to guess which one? Write it into\u00a0the comments and you will get personalized kudos in the next update :-)).<\/p>\n<p><a href=\"https:\/\/acoustic-velocity.com\/wp-content\/uploads\/2016\/04\/ci.jpg\" rel=\"attachment wp-att-252\"><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-252 aligncenter\" src=\"https:\/\/acoustic-velocity.com\/wp-content\/uploads\/2016\/04\/ci.jpg\" alt=\"ci\" width=\"690\" height=\"340\" srcset=\"https:\/\/acoustic-velocity.com\/wp-content\/uploads\/2016\/04\/ci.jpg 690w, https:\/\/acoustic-velocity.com\/wp-content\/uploads\/2016\/04\/ci-300x148.jpg 300w\" sizes=\"(max-width: 690px) 100vw, 690px\" \/><\/a><\/p>\n<p>From the screen shot above you can guess that I have some unit tests running meanwhile. I decided to run the Vice emulator using a virtual display, because that allows me to run it on my headless server and still store screenshots in case something unexpected happens. This proves to be pretty important, as my tests rely on a Vice break point to be triggered. If this does not happen for some reason (e.g. if I messed up the code and it does totally different things from what I actually intended), the test system will grab a screen shot and kill Vice after a time out. That makes it easier for me to guess what went wrong.<\/p>\n<p>But I did more than gold plating my CI system: I finally started implementing the much more advanced idea I had for increasing the char mode flexibility.\u00a0The idea is to\u00a0assemble the current charset arbitrarily out of\u00a0different char set parts. For\u00a0any rectangular area on the maps, the combination\u00a0of\u00a0charset parts can be changed. This is done in the background, so the player does not notice it. Obviously that does not help against the limitation of 256 character<em><strong> visible on the screen<\/strong> <\/em>at the same time. But as soon as a couple of characters are not visible anymore, other characters can be swapped in. This is hard to handle during level design, but I think it should be doable to optimize the charset parts automatically in the level editor. Ideally,\u00a0I could simply design the levels mostly arbitrarily, and the editor will take care for the rest. Let&#8217;s see how\u00a0it works out&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last time I was talking a bit about the test framework I am setting up. I actually became a bit obsessive with this in the last weeks and spent a lot of effort to get it to a point where it fulfils everything I need. Meanwhile I am at a point where tests are run &hellip; <a href=\"https:\/\/acoustic-velocity.com\/?p=251\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Gold plated tests and breaking the 256 character limit<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/acoustic-velocity.com\/index.php?rest_route=\/wp\/v2\/posts\/251"}],"collection":[{"href":"https:\/\/acoustic-velocity.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/acoustic-velocity.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/acoustic-velocity.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/acoustic-velocity.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=251"}],"version-history":[{"count":2,"href":"https:\/\/acoustic-velocity.com\/index.php?rest_route=\/wp\/v2\/posts\/251\/revisions"}],"predecessor-version":[{"id":254,"href":"https:\/\/acoustic-velocity.com\/index.php?rest_route=\/wp\/v2\/posts\/251\/revisions\/254"}],"wp:attachment":[{"href":"https:\/\/acoustic-velocity.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=251"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/acoustic-velocity.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=251"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/acoustic-velocity.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}