<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Testing &#8211; Xojo Programming Blog</title>
	<atom:link href="https://blog.xojo.com/tag/testing/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.xojo.com</link>
	<description>Blog about the Xojo programming language and IDE</description>
	<lastBuildDate>Mon, 29 Apr 2024 16:31:12 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Xojo MVPs Pointing Xojo in the Right Direction</title>
		<link>https://blog.xojo.com/2024/04/29/xojo-mvps-pointing-xojo-in-the-right-direction/</link>
		
		<dc:creator><![CDATA[Xojo]]></dc:creator>
		<pubDate>Mon, 29 Apr 2024 16:31:11 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Xojo Forum]]></category>
		<category><![CDATA[Xojo Framework]]></category>
		<category><![CDATA[Xojo MVP]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=12569</guid>

					<description><![CDATA[It's been too long since we last recognized the enormous amount of valuable assistance that the Xojo MVPs provide to Xojo and the community. We are so grateful to have such an amazing group of dedicated, passionate Xojo experts with so much Xojo knowledge. You may occasionally see MVPs on the forum, but much of their help is behind-the-scenes and some of what they have helped us with just might surprise you.]]></description>
										<content:encoded><![CDATA[
<p>It&#8217;s been too long since we last recognized the enormous amount of valuable assistance that the <a href="https://www.xojo.com/mvp/">Xojo MVPs</a> provide to Xojo and the community. We are so grateful to have such an amazing group of dedicated, passionate Xojo experts with so much Xojo knowledge. You may occasionally see MVPs on the forum, but much of their help is behind-the-scenes and some of what they have helped us with just might surprise you.</p>



<p>Firstly, the MVPs work as your advocates, drawing attention to issues that they feel are important to the community. Their passion comes through in all interactions with the Xojo team, from justifiably reminding us of bugs we need to address or features that would be appreciated by many.</p>



<p>Since the MVPs all use Xojo in different ways, this helps to make sure we get a wide variety of feedback. Sometimes we get direct, specific suggestions such as the <a href="https://blog.xojo.com/2023/10/10/get-set/">Set class</a>, which (due to the provided code), we were able to add as a feature to Xojo relatively quickly. Some especially valuable MVP insights regarding stack checking helped us to pinpoint areas where we could make changes to the Xojo framework that resulted in dramatic performance improvements to Xojo itself along with all your projects. MVP tips and testing have also helped us nail down some issues that helped improve debugger stabilization. MVPs have even created a supplemental unit testing suite to help test the Android framework!</p>



<p>Speaking of testing, the MVPs certainly do more than their fair share of testing. They have helped with an enormous amount of testing for many parts of Xojo, most recently including PDF, Barcode, Charts and Android. When they find bugs, MVPs always create thorough, well-explained Issues, usually with sample projects, allowing us to fix things faster for everyone&#8217;s benefit. At times MVPs even review your own submitted Issues and may offer suggestions or advice for you to try.</p>



<p>In addition to testing and providing feedback on the product as you see it today, MVPs get to see stuff early, sometimes even before designs or implementations are finalized. This may be in the form of demos or test builds. Their tips, comments and suggestions can help provide direction to how we end up actually implementing a feature or change.</p>



<p>The Xojo documentation is also continuously improved by MVP feedback and suggestions. MVPs were first to see the new documentation site before it was unveiled to everyone and their keen eyes have helped us improve search, sample code and continue to polish things.</p>



<p>From inception to documentation, this group of dedicated Xojo experts has helped us shape Xojo. If you are pleased with what Xojo is today, you should thank a Xojo MVP.</p>



<p>To Anthony, Christian, Gavin, Jeremie, Kem, Martin and Wayne we at Xojo offer a heartfelt &#8220;Thank You!&#8221; and have made donations on your behalf to several open-source projects that also help make Xojo possible: <a href="https://foundation.llvm.org">LLVM Foundation</a>, <a href="https://getbootstrap.com">Bootstrap</a> and <a href="https://ubuntu.com">Ubuntu</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Filtering the Debugger</title>
		<link>https://blog.xojo.com/2023/03/28/filtering-the-debugger/</link>
		
		<dc:creator><![CDATA[Javier Menendez]]></dc:creator>
		<pubDate>Tue, 28 Mar 2023 11:00:00 +0000</pubDate>
				<category><![CDATA[Learning]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<category><![CDATA[Rapid Application Development]]></category>
		<category><![CDATA[Remote Debugging]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Xojo Code]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=11405</guid>

					<description><![CDATA[Starting with Xojo 2023r1 you'll find a new feature in Xojo's Debugger panel that allows you to filter the objects and variables displayed, even between different project runs! That way you can stay focused on the more important objects and variables instead of scrolling through the list of all entries.]]></description>
										<content:encoded><![CDATA[
<p>Starting with Xojo 2023r1 you&#8217;ll find a new feature in Xojo&#8217;s Debugger panel that allows you to filter the objects and variables displayed, even between different project runs! This lets you stay focused on the more important objects and variables instead of scrolling through the list of all entries.</p>



<span id="more-11405"></span>



<p>I&#8217;ll outline the way it works here:</p>



<ul class="wp-block-list">
<li>Start typing in the Filter field <strong>(1)</strong>. You can enter a single item or several items names using a comma.</li>



<li>As you type, the list will display the filtered matches using the default &#8220;Begins with&#8221; matching criteria. You can change the matching type using the popup menu found at the right of the Filter field <strong>(2)</strong>.</li>



<li>If you want more control of the items filtered, click on the Edit filter button <strong>(3)</strong>. Here you&#8217;ll be able to select the items to filter, clear all or select all of them. The list will be filtered based on that criteria once the dialog is closed.</li>
</ul>



<figure class="wp-block-image is-style-default"><img fetchpriority="high" decoding="async" width="1024" height="643" src="https://blog.xojo.com/wp-content/uploads/2023/03/DebuggerFilter-1024x643.png" alt="" class="wp-image-11406" srcset="https://blog.xojo.com/wp-content/uploads/2023/03/DebuggerFilter-1024x643.png 1024w, https://blog.xojo.com/wp-content/uploads/2023/03/DebuggerFilter-300x188.png 300w, https://blog.xojo.com/wp-content/uploads/2023/03/DebuggerFilter-768x482.png 768w, https://blog.xojo.com/wp-content/uploads/2023/03/DebuggerFilter.png 1352w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>


<div class="wp-block-image is-style-default">
<figure class="aligncenter"><img decoding="async" width="802" height="540" src="https://blog.xojo.com/wp-content/uploads/2023/03/FilterEdit.png" alt="" class="wp-image-11407" srcset="https://blog.xojo.com/wp-content/uploads/2023/03/FilterEdit.png 802w, https://blog.xojo.com/wp-content/uploads/2023/03/FilterEdit-300x202.png 300w, https://blog.xojo.com/wp-content/uploads/2023/03/FilterEdit-768x517.png 768w" sizes="(max-width: 802px) 100vw, 802px" /></figure>
</div>


<p>The combination of the filter criteria and matching type for the current selected stack frame and variable/object will be remembered and automatically applied again when that same object/variable is selected in the Debugger Panel. This also applies when that same project is debugged again, even at different Xojo runs.</p>


<div class="wp-block-image is-style-default">
<figure class="aligncenter"><img decoding="async" width="628" height="388" src="https://blog.xojo.com/wp-content/uploads/2023/03/DebugFilter.gif" alt="" class="wp-image-11408"/></figure>
</div>


<p>As you can see, this debugger filter can be very helpful when there are a lot of objects and variables displayed during the app&#8217;s debugging session. No license is required to learn, develop and test your projects in the latest Xojo release! <a href="https://xojo.com/download/">Download Xojo</a> 2023r1 today!</p>



<p><em>Javier Menendez is an engineer at Xojo and has been using Xojo since 1998. He lives in Castellón</em>, <em>Spain and hosts regular Xojo hangouts en español. Ask Javier questions on Twitter at <a href="https://twitter.com/xojoes" target="_blank" rel="noreferrer noopener">@XojoES</a> or on the <a href="https://forum.xojo.com/u/javier_menendez/summary" target="_blank" rel="noreferrer noopener">Xojo Forum</a>.</em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Automated Testing: How We Test Xojo Builds</title>
		<link>https://blog.xojo.com/2021/12/17/automated-testing-how-we-test-xojo-builds/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Fri, 17 Dec 2021 22:04:03 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Automated Builds]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Build Automation]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<category><![CDATA[Rapid Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=9831</guid>

					<description><![CDATA[Xojo has an extensive testing period where actual users test a pre-release version with their projects but if you are wondering what kind of testing we do internally before each pre-release of Xojo, we have quite a bit of automated testing processes. There are over 400 tests just for the compiler alone. Already, we are approaching 300 tests for our Android framework. In total, across all supported platforms, there are over 2500 automated tests. ]]></description>
										<content:encoded><![CDATA[
<p>Xojo has an extensive testing period where actual users test a pre-release version with their projects but if you are wondering what kind of testing we do internally before each pre-release of Xojo,&nbsp;we have quite a bit of automated testing processes. There are over 400 tests just for the compiler alone. Already, we are approaching 300 tests for our Android framework. In total, across all supported platforms, there are over 2500 automated tests. Most tests run every time we do a full build of Xojo (also a fully automated process) which occurs 2 to 5 times a week. When one of these tests fails, the unlucky engineer responsible is informed and gets to work fixing it. More automated tests are being added to our system regularly.</p>



<p>Primarily, <a href="https://blog.xojo.com/2020/09/29/how-do-we-decide-what-goes-into-xojo/\">we focus</a> on the issues having the greatest impact on the Xojo community. However, that focus is not absolute. The engineering team at Xojo is using Xojo all-day, every day. They will often catch bugs in the early stages of the development of a new feature or as a side effect of fixing some other bug, long before that release gets to pre-release testers. The number of combinations of interactions between various parts of the Xojo frameworks is effectively infinite and no system can test everything. That&#8217;s why pre-release testing by actual users is so important. When you look at the bugs that are reported, 95.6% have only one user reporting them. Though we provide, in fact require, users to search Feedback before submitting a case, users often describe the same bug in varying ways resulting in&nbsp;duplicates. Given both the infinite number of interactions and some number of duplicate reports, the fact that overwhelming majority of reports have just one user is understandable. That we focus on the reports that have multiple users is also understandable. And of course there are exceptions, if it&#8217;s obvious that a new bug is going to effect a lot of users, we will get to work on it ASAP.&nbsp;In addition, if an engineer is working in a particular part of the IDE or a particular framework, since they have take the time to refamiliarize themselves with that code, they will often look for bugs that have been reported against it.&nbsp;</p>



<p>Development tools are special because the type of people who use them are more likely to report bugs and are more likely to want to search the list of open cases, get updates about bugs and more. While it&#8217;s important to report bugs, and we can’t stress enough how much we appreciate the time and care you take in doing so, even if the bug is fixed, you still have to wait for the release in which it&#8217;s fixed. Even our engineers have to wait for bugs fixes just like you do. Still, when you run into a bug, please search <a href="http://www.xojo.com/download">Feedback</a> first to see if it&#8217;s been reported, perhaps think of a few ways it could have been reported and do a few searches. If you find a match, add yourself to the case. If you don&#8217;t, please file a case. If you haven&#8217;t found a workaround, ask on the <a href="https://forum.xojo.com/">forum</a> or contact us directly and we see what we can do to help. </p>



<p>There is a lot of automated testing that goes on before we put out a pre-release to Testers. And we will continue to add more because automated testing is a terrific and efficient way to test anything that can be automatically tested. We are always on the lookout for ways to improve efficiency in our processes. </p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Joining the Pre-Release Testing Program</title>
		<link>https://blog.xojo.com/2021/08/11/joining-the-pre-release-testing-program/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Wed, 11 Aug 2021 16:01:49 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Testing]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=8999</guid>

					<description><![CDATA[One of the ways our Xojo MVPs help the community is by being on the lookout for areas that can be improved and bringing them&#8230;]]></description>
										<content:encoded><![CDATA[
<p>One of the ways our <a href="https://www.xojo.com/mvp/" target="_blank" rel="noreferrer noopener">Xojo MVPs</a> help the community is by being on the lookout for areas that can be improved and bringing them to our attention. Recently one of the MVPs (Anthony Cyphers) started a discussion with us and the other MVPs about pre-release testing. As you may or may not know, we provide pre-release builds for testing purposes to those with an active license. Not everyone chooses to participate but many do and it&#8217;s a great way to not only help improve the quality of Xojo but also provide feedback prior to public release.</p>



<p>While pre-release builds require an active license, we recognize that there are some users that, for a variety of reasons, might not have an active license but are nevertheless eager to participate in testing. If this describes you, please reach out to our <a href="email://hello@xojo.com">customer service team</a> to inquire about joining our pre-release testing program. Because pre-releases are made available via the Xojo Forum, to participate you must be a member with forum access enabled in your <a rel="noreferrer noopener" href="https://www.xojo.com/account/settings/" target="_blank">Xojo account settings</a>. </p>



<p>I&#8217;d like to give special thanks to MVP Anthony Cyphers who spent over an hour on the phone with me discussing this issue.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>IDE changes in Xojo 2018r3 and more</title>
		<link>https://blog.xojo.com/2018/10/23/following-the-dark-path/</link>
		
		<dc:creator><![CDATA[Greg O'Lone]]></dc:creator>
		<pubDate>Tue, 23 Oct 2018 10:00:43 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[DarkMode]]></category>
		<category><![CDATA[HiDPi]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Lingua]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[Remote Debugging]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Xojo Feedback]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=5075</guid>

					<description><![CDATA[About three years ago, we added HiDPI/Retina support to our framework which was released to users as part of Xojo 2016r1 when we also shipped&#8230;]]></description>
										<content:encoded><![CDATA[<p>About three years ago, we added HiDPI/Retina support to our framework which was released to users as part of Xojo 2016r1 when we also shipped our first HiDPI IDE.</p>
<p>With Apple’s announcements at WWDC 2018 and the introduction of dark mode it was time to revisit our graphics and the overall appearance of the IDE again. Here are some things which contribute to the changes that have been made and ones that you will see in the coming months.</p>
<p><span id="more-5075"></span></p>
<h3><b>Dropping macOS 10.9</b></h3>
<p>Xojo 2018r3 drops support for macOS 10.9 and as the last version which had the skeuomorphic design elements all of our supported OS’s now have the flatter modern design. It’s not that this has held anything up per se, but it’s a good reminder that “it’s time”.<span class="Apple-converted-space"> </span></p>
<p>To that end, we have taken that opportunity to remove some of the graphics that make the IDE look out of place and doing so subtly lowers the memory footprint and accelerates drawing of the IDE itself across all platforms. We&#8217;re also using a variation of Apple&#8217;s image templates which has somewhat reduced the on-disk footprint of the IDE itself.</p>
<h3><b>macOS Dark Mode</b></h3>
<p>Apple’s addition of a darker variant of the visual “Aqua” theme in macOS means that we needed to do an audit and update of several of our base framework controls so that <i>your</i> apps would render correctly as well as ours.<span class="Apple-converted-space"> </span></p>
<h4>Events</h4>
<p>While it probably won’t be used very often (how often does one change themes while running a piece of software, besides the novelty of seeing it happen), we added an event to the App class named AppearanceChanged to notify you when the user changes from light to dark or changes their accent color. This is a good place to clear any graphic or color caches which contain theme specific UI graphics.<span class="Apple-converted-space"> </span></p>
<h4>Methods</h4>
<p>There is also a new global method called IsDarkMode(Boolean) which will return True if your app is running with the Dark Mode theme on macOS 10.14 or higher.<span class="Apple-converted-space"> If your app is running on 10.13 or lower or in light mode on 10.14, IsDarkMode will return False.</span></p>
<h4>Build Settings</h4>
<p>Enabling Dark Mode in your apps is as easy as flipping a switch in the Shared Build Settings. Unfortunately, because Apple made the assumption that most apps would “just work” versions of your apps compiled with older versions of Xojo will either need to be recompiled with Xojo 2018r3 or you’ll need to push out a new version with a plist entry to prevent macOS 10.14 from showing your app dark in Dark Mode.<span class="Apple-converted-space"> </span></p>
<h4>Testing</h4>
<p>When testing apps for use with Mojave&#8217;s dark mode, I seriously suggest that you test on a system that allows you to see the translucency effects of dark mode. Virtual Machines are usually really handy for testing, but in this case, Parallels Desktop 14, VirtualBox 5.2 and VMWare Fusion 11 do not show the subtleties of dark mode.</p>
<h4>Colors</h4>
<p>One of our goals at Xojo is to remove some of the headaches involved with the minutiae of each OS that you deploy for and to that end, we wanted to make drawing custom controls easier too. What this means is that the built-in global colors are largely theme aware now and will change depending on whether your app is running in light or dark mode on macOS. This affects things like TextColor, FillColor, FrameColor, HighlightColor, etc, so if you use those methods when drawing in pictures and canvases, you will want to audit that code. If you want a specific color, you should use a color constant. For instance, use &amp;c000000 if you want black because TextColor will now return white in Dark Mode.<span class="Apple-converted-space"> </span></p>
<p>In terms of the framework controls themselves, we are taking this opportunity to make some changes to make your apps appear better in the macOS 10.10+ ecosystem. Ever notice that a Label control and the text portion of a CheckBox or RadioButton control are not exactly the same color? Going forward, the default colors of controls which <i>should</i> automatically change between Light and Dark modes <i>will</i> do that. So if you have a Label using the default color of &amp;c00000000 (Black with Transparency = 0), the color that is actually used is what Apple calls labelColor. It’s still black, but is a tiny bit translucent. TextFields and TextAreas will automatically change text, placeholder, selection and background colors to match the Apple prescribed colors for automatic Light/Dark compatibly. We think you’ll find that building your apps with 2018r3 will largely make them just behave and appear the way you expected them to.</p>
<p>IMPORTANT NOTE: These color and framework changes affect how your apps draw on <i>all</i> versions of macOS, so make sure you try them out on your 10.10 through 10.14 VMs before shipping!</p>
<h4>Eating our own dog food</h4>
<p>One thing we hear from users every so often is the desire for Xojo to use our own products for building apps. As most of you know the IDE itself is written in Xojo, but we also have several other apps (big and small) that are written in Xojo.</p>
<ul>
<li>Feedback &#8211; Our bug reporting system</li>
<li>Xorders &#8211; Our internal order system</li>
<li>Lingua &#8211; The Xojo localization app</li>
<li>Remote Debugger &#8211; The remote debugger stubs for desktop and console</li>
</ul>
<p>While the 2018r3 cycle was in progress, all four of these projects got updated for Mojave&#8217;s Dark Mode and definitely helped us find framework rendering bugs early on in the pre-release process.</p>
<h4><b>What about Windows and Linux?</b></h4>
<p>The TL;DR version is that we’re still looking into it.<span class="Apple-converted-space"> </span></p>
<p>Currently there are several different ways to change Windows 7, 8 and 10 to use a dark interface, not all of which are compatible with the Xojo Framework controls and the Windows 10 2018 Fall Update promised yet another way but that ended up only being for UWP. We are looking into which method gets you the most “bang for the buck” so to speak.<span class="Apple-converted-space"> </span></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Prepare Your Classes to Work in Simulated or Real Modes</title>
		<link>https://blog.xojo.com/2018/06/01/prepare-your-classes-to-work-in-simulated-or-real-modes/</link>
		
		<dc:creator><![CDATA[Javier Menendez]]></dc:creator>
		<pubDate>Fri, 01 Jun 2018 10:00:58 +0000</pubDate>
				<category><![CDATA[Learning]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[AprendeXojo]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Xojo Framework]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=4321</guid>

					<description><![CDATA[In many of our development projects, if not all, we are confronted with situations when we need to test the components before the final deployment of the project. It would be just as effective, and a lot less disruptive to those using your app, to test using  a mechanism that allows us tell our apps when to run in "simulated" mode or "real".]]></description>
										<content:encoded><![CDATA[<p>In many of our development projects, if not all, we are confronted with situations when we need to test our classes before the final deployment of a project. I&#8217;m not talking about <a href="https://github.com/xojo/XojoUnit">Unit Testing</a> here, though I highly recommend the excellent session on that topic from&nbsp;<a href="https://forum.xojo.com/47544-xdc-2018-session-videos-now-available">XDC 2018</a>.</p>
<p>For example, it would not be desirable to send hundreds of emails to all the entries in a database simply to test one of the workflow steps or to verify that emails are being delivered as expected. It would be a lot simpler, and less disruptive to those using your app, to test using a few email addresses that are under your control.</p>
<p>So let&#8217;s establish a mechanism that allows us tell our apps when to run in a &#8220;simulated&#8221; mode vs. a &#8220;real&#8221; mode for all or some of the components that we need to test along the development cycle.</p>
<p><span id="more-4321"></span></p>
<p>In fact, the way we can implement this is very simple and is based in the definition of a Boolean property in every class (let&#8217;s call it <code>Simulation</code>) that we can make visible under the <b>Inspector Panel</b> using the <b>Inspector Behavior</b> feature. Doing this, we can also change it when we drag and drop the class on the Window Layout tray in order to create an implicit instance.</p>
<p>In association with the property itself, we will implement every public method that will be called from the consumer (other component or code of the app) as usual, with the only difference that we will add two additional private methods for every public method we want to run in both modes: simulated and real. For example, let&#8217;s say we have a class that returns a <code>Dictionary</code> array with data from a database. We create a public method for the class, called <code>GetData</code>, but when we just need to test other components it provides some fake data instead of connecting and retrieving a bunch of real data from the remote database. In this case we could define the following methods for the class:</p>
<ul>
<li><code>GetData() As Dictionary()</code>. Public Method, part of the visible interface for the rest of the app.</li>
<li><code>GetRealData As Dictionary()</code>. Private Method, called if the <code>Simulation</code> property is set to <code>False</code>.</li>
<li><code>GetSimulationData As Dictionary()</code>. Private Method, called when the <code>Simulation</code> property is set to <code>True</code>.</li>
</ul>
<p>Then, the real code for our public method will be simply this:</p>
<p><code>Return if(Simulation = True and DebugBuild = True, GetSimulationData, GetRealData)</code></p>
<p>Simple, isn&#8217;t it? With this you will have the maximum flexibility to choose the functionality you want to test using real or simulated data: all, none, part of them … even when you deploy the compiled project it will work always with real data.</p>
<p><em>Javier Rodri­guez has been&nbsp;the Xojo Spanish&nbsp;Evangelist since 2008, he’s also a Developer, Consultant and Trainer who&nbsp;has be using&nbsp;Xojo since 1998. He manages&nbsp;<a href="http://www.aprendexojo.com">AprendeXojo.com</a> and is the developer behind the GuancheMOS plug-in for Xojo Developers, Markdown Parser for Xojo, HTMLColorizer for Xojo and the Snippery app, among others</em></p>
<p>*<a href="https://www.aprendexojo.com/2018/05/prepara-tus-clases-para-uso-en-modo-simulado-o-real/">Read this post in Spanish</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Test Your Apps on Windows for Free</title>
		<link>https://blog.xojo.com/2017/05/22/test-your-apps-on-windows-for-free/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Mon, 22 May 2017 08:50:41 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Remote Debugging]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Virtual Machine]]></category>
		<category><![CDATA[Windows 10]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=2773</guid>

					<description><![CDATA[If you are a Mac or Linux developer, one of the easiest ways to test your apps on Windows is to use a virtual machine. And you can test Windows in a VM completely for free by using the test VMs provided by Microsoft.]]></description>
										<content:encoded><![CDATA[<p>If you are a Mac or Linux web or cross-platform developer, one of the easiest ways to test your apps on Windows is to use a virtual machine. And you can test Windows in a VM completely for free by using the test VMs provided by Microsoft.</p>
<p><span id="more-2773"></span></p>
<p>First you&#8217;ll need Virtual Machine software. I prefer VMware Fusion, but the free VirtualBox can be used instead. You can download VirtualBox from here:</p>
<p><a href="https://www.virtualbox.org">https://www.virtualbox.org</a></p>
<p>When VirtualBox is installed, you can head on over to the Microsoft site to get a test copy of Windows pre-configured for VirtualBox:</p>
<p><a href="https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/">https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/</a></p>
<p>Microsoft provides versions of Windows 7, 8.1 and 10 that you can use for testing purposes. Simply download the ones you want and add them to VirtualBox.</p>
<p>You can install the <a href="http://developer.xojo.com/userguide/remote-debugging">Xojo Remote Debugger</a> and use these test versions to test your Xojo apps for Windows. Or you can use these to run Windows-specific web browsers for testing your web apps. Keep in mind that these Windows VMs expire after 90 days, so you&#8217;ll have to re-download periodically.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
