Skip to content

Instantly share code, notes, and snippets.

@arturaz
arturaz / Ref.cs
Last active November 20, 2017 21:11
Ultra short RSpec/NSpec/Specs style testing framework implementation on C#
public interface Val<out A> {
A value { get; }
}
public interface Ref<A> : Val<A> {
new A value { get; set; }
}
/* Simple heap-allocated reference. */
public class SimpleRef<A> : Ref<A> {
Fn<ImmutableArray<KeyValuePair<string, string>>.Builder, Act < string, string>> createAppend =
builder => (key, value) => {
qs.append(key, value);
builder.Add(F.kv(key, value));
};
var appendTag = createAppend(tags);
var appendExtra = createAppend(extras);
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Tiny Lab Productions Projects</title>
<style>
static void UpdateCoord(ref float x) { x = x < 0 ? (360 + x) : x; }
public static Vector3 ReCountAngle(Vector3 ang) {
UpdateCoord(ref ang.x);
UpdateCoord(ref ang.y);
UpdateCoord(ref ang.z);
return ang;
}
// Usage
log.debug(s"Writing batched data to DB (singles: ${data.size}, arrays ${arrayData.size})")
// Implementation
def debug(message: String): Unit = macro LoggerMacro.debugMessage
// Macro
def debugMessage(c: LoggerContext)(message: c.Expr[String]) = {
import c.universe._
val underlying = q"${c.prefix}.underlying"
03-29 11:41:42.130: I/Unity(29707): [T1|DEBUG]> Activating MarsMedia
03-29 11:41:42.130: I/Unity(29707): UnityEngine.DebugLogHandler:Internal_Log(LogType, String, Object)
03-29 11:41:42.130: I/Unity(29707): UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
03-29 11:41:42.130: I/Unity(29707): UnityEngine.Logger:Log(LogType, Object, Object)
03-29 11:41:42.130: I/Unity(29707): UnityEngine.Debug:Log(Object, Object)
03-29 11:41:42.130: I/Unity(29707): com.tinylabproductions.TLPLib.Logger.UnityLog:logInner(Level, String, Option`1) (at C:\work\unity\funkidracing\unity\Assets\Plugins\Vendor\TLPLib\Logger\Log.cs:206)
03-29 11:41:42.130: I/Unity(29707): com.tinylabproductions.TLPLib.Logger.LogBase:log(Level, Object, Object) (at C:\work\unity\funkidracing\unity\Assets\Plugins\Vendor\TLPLib\Logger\Log.cs:175)
03-29 11:41:42.130: I/Unity(29707): com.tinylabproductions.TLPLib.Logger.ILogExts:debug(ILog, Object, Object) (at C:\work\unity\funkidracing\unity\Assets\Plugins\Vendor\TLPLib\Logger\Log.cs:13
03-28 17:15:34.190: I/Unity(31519): [Tm|DEBUG]> Activating MarsMedia
03-28 17:15:34.190: I/Unity(31519): UnityEngine.DebugLogHandler:Internal_Log(LogType, String, Object)
03-28 17:15:34.190: I/Unity(31519): UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
03-28 17:15:34.190: I/Unity(31519): UnityEngine.Logger:Log(LogType, Object, Object)
03-28 17:15:34.190: I/Unity(31519): UnityEngine.Debug:Log(Object, Object)
03-28 17:15:34.190: I/Unity(31519): com.tinylabproductions.TLPLib.Logger.UnityLog:logInner(Level, String, Option`1) (at C:\work\unity\funkidracing\unity\Assets\Plugins\Vendor\TLPLib\Logger\Log.cs:206)
03-28 17:15:34.190: I/Unity(31519): com.tinylabproductions.TLPLib.Logger.LogBase:log(Level, Object, Object) (at C:\work\unity\funkidracing\unity\Assets\Plugins\Vendor\TLPLib\Logger\Log.cs:175)
03-28 17:15:34.190: I/Unity(31519): com.tinylabproductions.TLPLib.Logger.ILogExts:debug(ILog, Object, Object) (at C:\work\unity\funkidracing\unity\Assets\Plugins\Vendor\TLPLib\Logger\Log.cs:13
# #!/bin/bash
$ErrorActionPreference = "Stop"
# Set-PSDebug -trace 2 -strict # Debugging
[string] $CMD_TEST = "test"
[string] $CMD_BUILD = "build"
if ($args.Count -lt 5) {
Write-Host
/** Access to ```internal AndroidJavaObject(IntPtr jobject)``` */
static readonly Fn<object[], AndroidJavaObject> ajoCreator =
PrivateConstructor.creator<AndroidJavaObject>();
public static AndroidJavaObject cjoReturningNull(
this AndroidJavaObject javaObject, string methodName, params object[] args
) {
if (args == null) args = new object[1];
var methodId = AndroidJNIHelper.GetMethodID<AndroidJavaObject>(
public class HashMap : Binding {
public HashMap(AndroidJavaObject java) : base(java) {}
public HashMap() : base(new AndroidJavaObject("java.util.HashMap")) {}
public HashMap(
IEnumerable<KeyValuePair<AndroidJavaObject, AndroidJavaObject>> enumerable
) : this() {
foreach (var kv in enumerable) put(kv.Key, kv.Value);
}