<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel><title>libraries | Hugo Ferreira</title>
    <link>https://hugo.ferreira.cc/tags/libraries/</link>
    <description>Recent content in Libraries by Hugo Ferreira</description>
    <image>
      <title>libraries | Hugo Ferreira</title>
      <url>https://hugo.ferreira.cc/hf-bw.jpg</url>
      <link>https://hugo.ferreira.cc/tags/libraries/</link>
    </image>
    <generator>Hugo -- 0.124.1</generator>
    <language>en</language>
    <copyright>2000–2024 by Hugo Ferreira · CC BY 4.0</copyright>
    <lastBuildDate>Mon, 06 Nov 2023 03:53:37 +0000</lastBuildDate>
    <atom:link href="https://hugo.ferreira.cc/tags/libraries/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>🔗 Approval Tests</title>
      <link>https://hugo.ferreira.cc/approval-tests/</link>
      <pubDate>Mon, 06 Nov 2023 03:53:37 +0000</pubDate>
      <guid>https://hugo.ferreira.cc/approval-tests/</guid>
      <description>Approval Tests - Home
Unit testing asserts can be difficult to use. Approval tests simplify this by taking a snapshot of the results, and confirming that they have not changed.
Interesting approach to testing using Combination Approvals:
@Test public void upateQuality() throws Exception { CombinationApprovals.verifyAllCombinations( this::doUpdateQuality, new String []{&amp;#34;foo&amp;#34;, &amp;#34;bar&amp;#34;, &amp;#34;baz&amp;#34;}, new Integer []{-1, 0, 11}, new Integer[0, 1, 49, 50}); } private String doUpdateQuality(String name, int sellIn, int quality) { /*.</description>
      <content:encoded><![CDATA[<p><a href="https://approvaltests.com/">Approval Tests - Home</a></p>
<blockquote>
<p>Unit testing asserts can be difficult to use. Approval tests simplify this by taking a snapshot of the results, and confirming that they have not changed.</p>
</blockquote>
<p>Interesting approach to testing <a href="https://youtu.be/zyM2Ep28ED8?t=484&amp;si=O3cw60wFKt0GgivG">using Combination Approvals</a>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="nd">@Test</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">upateQuality</span><span class="p">()</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">CombinationApprovals</span><span class="p">.</span><span class="na">verifyAllCombinations</span><span class="p">(</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">this</span><span class="p">::</span><span class="n">doUpdateQuality</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">new</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="o">[]</span><span class="p">{</span><span class="s">&#34;foo&#34;</span><span class="p">,</span><span class="w"> </span><span class="s">&#34;bar&#34;</span><span class="p">,</span><span class="w"> </span><span class="s">&#34;baz&#34;</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">new</span><span class="w"> </span><span class="n">Integer</span><span class="w"> </span><span class="o">[]</span><span class="p">{</span><span class="o">-</span><span class="n">1</span><span class="p">,</span><span class="w"> </span><span class="n">0</span><span class="p">,</span><span class="w"> </span><span class="n">11</span><span class="p">},</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">new</span><span class="w"> </span><span class="n">Integer</span><span class="o">[</span><span class="n">0</span><span class="p">,</span><span class="w"> </span><span class="n">1</span><span class="p">,</span><span class="w"> </span><span class="n">49</span><span class="p">,</span><span class="w"> </span><span class="n">50</span><span class="p">});</span><span class="w">    
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kd">private</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">doUpdateQuality</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">sellIn</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">quality</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="cm">/*...*/</span><span class="w"> </span><span class="p">}</span><span class="w">
</span></span></span></code></pre></div><blockquote>
<p>Approval Tests has a variety of implementations on a wide range of platforms. You can browse all of the projects at our <a href="https://github.com/approvals">GitHub Org</a></p>
<p>⚠️ some of these are in various stages of 🚧</p>
<ul>
<li><a href="https://github.com/approvals/ApprovalTests.Net">.Net</a></li>
<li><a href="https://github.com/approvals/CppApprovals">C++</a></li>
<li><a href="https://github.com/approvals/ApprovalTests.Java">Java</a></li>
<li><a href="https://github.com/approvals/ApprovalTests.lua">Lua</a></li>
<li><a href="https://github.com/approvals/Approvals.NodeJS">NodeJS</a></li>
<li><a href="https://github.com/approvals/ApprovalTests.Objective-C">Objective-C</a></li>
<li><a href="https://github.com/approvals/ApprovalTests.perl">Perl</a></li>
<li><a href="https://github.com/approvals/ApprovalTests.Python">Python</a></li>
</ul>
</blockquote>
]]></content:encoded>
    </item>
    <item>
      <title>🔗 Intro.js</title>
      <link>https://hugo.ferreira.cc/introjs/</link>
      <pubDate>Thu, 31 Aug 2023 12:50:24 +0000</pubDate>
      <guid>https://hugo.ferreira.cc/introjs/</guid>
      <description>User Onboarding and Product Walkthrough Library | Intro.js
Intro.js is a lightweight JavaScript library for creating step-by-step and powerful customer onboarding tours
Good way to announce and introduce new features to users.</description>
      <content:encoded><![CDATA[<p><a href="https://introjs.com">User Onboarding and Product Walkthrough Library | Intro.js</a></p>
<blockquote>
<p>Intro.js is a lightweight JavaScript library for creating step-by-step and powerful customer onboarding tours</p>
</blockquote>
<p>Good way to announce and introduce new features to users.</p>
]]></content:encoded>
    </item>
    <item>
      <title>🔗 Custom UI Controls for iOS and Mac OS X -- Cocoa Controls</title>
      <link>https://hugo.ferreira.cc/custom-ui-controls-for-ios-and-mac-os-x-cocoa/</link>
      <pubDate>Tue, 14 Aug 2012 07:07:28 +0000</pubDate>
      <guid>https://hugo.ferreira.cc/custom-ui-controls-for-ios-and-mac-os-x-cocoa/</guid>
      <description>Custom UI Controls for iOS and Mac OS X &amp;ndash; Cocoa Controls
Making an app? Don&amp;rsquo;t re-invent the wheel. Save time by using a control someone&amp;rsquo;s already written.</description>
      <content:encoded><![CDATA[<p><a href="http://www.cocoacontrols.com/">Custom UI Controls for iOS and Mac OS X &ndash; Cocoa
Controls</a></p>
<blockquote>
<p>Making an app? Don&rsquo;t re-invent the wheel. Save time by using a control
someone&rsquo;s already written.</p>
</blockquote>
]]></content:encoded>
    </item>
  </channel>
</rss>
