Loading [MathJax]/extensions/MathMenu.js

Wednesday, 28 June 2023

Gitlab and Quantum Computing Code

So, I've been looking at Quantum Computing recently and as part of this I thought I'd also take the opportunity to learn GitLab by creating a repository with my scripts.

Gitlab

I setup a GitLab account using the free tier and then created a new project, "quantum"

Setting up SSH

To use SSH keys for communication with GitLab, I followed the instructions in the GitLab Docs to create an SSH key and add to my Profile

For Linux my ssh folder is ./ssh. To generate a new key, run

ssh-keygen -t ed25519 -c "A comment"

And follow the prompts for creating a filename and Passphrase

Then from the GitLab page, click on my Profile image (default for now!) and select Edit Profile -> SSH Keys.

In the Key box paste the contents of the .pub public key I created in the previous step. (Starting with ssh-ed25119), set the Title, usage type of "Authentication & Signing" and finally Add Key.

Visual Studio Code Integration  

From the Visual Studio Code welcome page I selected Clone Git Repository...

I then used the Clone with SSH option from the Clone button to obtain the git url and simply pasted that into Visual Studio Code

Running the script

I have an Anaconda Python environment with cirq added. Details about this will be added later.


Tuesday, 20 June 2023

Setting up Unit Tests in Visual Studio 2022

A very quick blog post tonight. This came about when I wanted to setup a new Unit Test project for an existing .NET 6 solution. The problem came with setting up the project package references and I couldn't remember what to add. So for future reference, the packages I added from NuGet were:

  • NUnit - The main unit-testing framework
  • NUnit3TestAdapter - This is used for running NUnit 3.x tests in Visual Studio
  • Microsoft.NET.Test.SDK - MSBuild targets and properties for building .NET test projects
The project was created as a Class library (Console Application also works but it doesn't really make sense given it's not hosting its own executable)

Add a class and within this attribute the tests to be run with either [Test]

        [Test]
        public void Test_Something()
        {
            var expected = "Something";
            var testValue = DoSomething();
            Assert.That(testValue, Is.EqualTo(expected));
        }

Or [TestCase], if you want to supply parameters

        [TestCase("Test1", 1, 2)]
        [TestCase("Test2", 2, 3)]
        public void LatLong_To_Mercator(string testName, int input, int expected)
        {
            // Run test with parameters and Asset against expected
        }

One last thing, the documentation says to add [TestFixture] to the class but this doesn't seem to be needed. The tests run anyway.

Ahha!
Beginning with NUnit 2.5, the TestFixture attribute is optional for non-parameterized, non-generic fixtures. So long as the class contains at least one method marked with the TestTestCase or TestCaseSource attribute, it will be treated as a test fixture.