Debian(stretch)にCSharp開発環境を作る

仕事でC#を使うことになったため、勉強のためにDebianにC#のプログラミング環境を作ることにしました。Debianにはmono-completeというパッケージがあるので、これをインストールすることにします。

$ sudo apt install mono-complete

これでパッケージのインストールは完了です。次にhello.csという名前で以下の内容のファイルを作成します。

using	System;

public class HelloWorld
{
static public void Main()
{
Console.WriteLine("Hello World");
}
}

コンパイルをします。

$ mono-csc hello.cs

そして実行します。

$ mono hello.exe
Hello World

単焦点レンズが欲しいなぁ

単焦点の標準レンズが欲しいので、ちょと探してみた。
Canon EF 50mm F1.2L USM これはLレンズなのでやっぱり高いです。
Canon EF 50mm F1.4 USM F1.4で定価\55,500。なかなかよさそうです。
Canon EF 50mm F1.8 STM 定価\19,500でコストパフォーマンスが高いようです。
Canon EF 40mm F2.8 STM 厚さ22.8mmのパンケーキレンズ。レンズを付けているのを忘れそうなレンズです。
お財布と相談しながらしばらく悩みます。

Debian stretchでgoogletestを使ってみる

c++の単体テストフレームワークにgoogletestというのがあります。
Debian stretchで使ってみたいと思います。

まずはインストール
aptでインストールすると

$ sudo apt install googletest

としてパッケージをインストール。

$ dpkg -L googletest

でインストールしたパッケージのファイルをリストするとソースコードが/usr/src/googletest配下にインストールされたので、移動します。

$ cd /usr/src/googletest/

直下にCMakeLists.txtがあるので、cmakeをインストールして、ビルドとインストールをします。

$ sudo apt install cmake
$ sudo cmake .
$ sudo make
$ sudo make install

これで、googletestを使う準備ができました。

では、テストをしてみます。ディレクトリの構成はこんな感じです。

.
├── src
│   └── example.cpp
└── test
    └── example_test.cpp

テスト対象のファイルは引数をインクリメントして返す関数を一つだけ書きます。

int	increment(int	x)
{
	return ++x;
}

関数increment()のテストを書きます。

#include <gtest/gtest.h>

#include "src/example.cpp"

TEST(example_test, func_increment)
{
	ASSERT_EQ(1, increment(0));
}

コンパイル&リンクします。リンクするライブラリはgtest, gtest_main pthreadです。
テスト内にmain()がないためgtest_mainをリンクし、google testがpthreadを使うためpthreadをリンクします。

g++ test/example_test.cpp -I. -lgtest -lgtest_main -lpthread -o example_test

テストを走らせてみます。

$ ./example_test 
Running main() from gtest_main.cc
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from example_test
[ RUN      ] example_test.func_increment
[       OK ] example_test.func_increment (0 ms)
[----------] 1 test from example_test (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[  PASSED  ] 1 test.

となり、無事テストが通りました。