Add tests
Modify syntax to be clearer
Add Query function
This commit is contained in:
Marc Di Luzio 2018-12-03 10:40:40 +00:00
parent a0e23300a5
commit e68b1a5214
23 changed files with 222 additions and 48 deletions

View file

@ -0,0 +1,42 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;
public class LinuxGameMode : MonoBehaviour
{
#if UNITY_EDITOR_LINUX || UNITY_STANDALONE_LINUX
// Import functions from native lib
[DllImport("UnityGameMode")]
public static extern int GameModeRequestStart();
[DllImport("UnityGameMode")]
public static extern int GameModeRequestEnd();
[DllImport("UnityGameMode")]
public static extern int GameModeQueryStatus();
private void Start()
{
Debug.Log("Requesting Linux GameMode Start");
var ret = GameModeRequestStart();
if (ret != 0)
{
Debug.Log($"Linux GameMode Start Failed: #{ret}");
}
}
private void OnApplicationQuit()
{
Debug.Log("Requesting Linux GameMode End");
var ret = GameModeRequestEnd();
if (ret != 0)
{
Debug.Log($"Linux GameMode End failed: #{ret}");
}
}
#else
public static int GameModeRequestStart() { return 0; }
public static int GameModeRequestEnd() { return 0; }
public static int GameModeQueryStatus() { return 0; }
#endif // UNITY_EDITOR_LINUX || UNITY_STANDALONE_LINUX
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 37e3f85ce68c6c2f186d5cf8cc78661a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 861cc3c09d2156d259770af563e138ee
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,42 @@
using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.TestTools;
#if UNITY_EDITOR_LINUX || UNITY_STANDALONE_LINUX
namespace Tests
{
public class LinuxGameModeTests
{
[Test]
public void GameModeRequestStartWorks()
{
var ret = LinuxGameMode.GameModeRequestStart();
Assert.IsTrue( ret == 0 );
}
[Test]
public void GameModeRequestEndWorks()
{
var ret = LinuxGameMode.GameModeRequestStart();
Assert.IsTrue( ret == 0 );
ret = LinuxGameMode.GameModeRequestEnd();
Assert.IsTrue( ret == 0 );
}
[Test]
public void GameModeGameModeQueryStatusWorks()
{
var ret = LinuxGameMode.GameModeRequestStart();
Assert.IsTrue( ret == 0 );
ret = LinuxGameMode.GameModeQueryStatus();
Assert.IsTrue( ret == 2 );
ret = LinuxGameMode.GameModeRequestEnd();
Assert.IsTrue( ret == 0 );
}
}
}
#endif

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 10924db4abe9770f4afcae590ef633b4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,16 @@
{
"name": "Tests",
"references": [
"UnityGameMode"
],
"optionalUnityReferences": [
"TestAssemblies"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": []
}

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 988460cbe66440da5957c2009cf1716c
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,3 @@
{
"name": "UnityGameMode"
}

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b64a5e540ca9753878ce248d3c605b90
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -1,2 +1,3 @@
#!/bin/bash
g++ unitygamemode.c -shared -ldl -o libUnityGameMode.so
nm -C libUnityGameMode.so | grep GameMode

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 034bb0da8726741ad84b3f98590ac9b9
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -1,9 +1,13 @@
#include "gamemode_client.h"
extern "C" int UnityEnterGameMode() {
gamemode_request_start();
extern "C" int GameModeRequestStart() {
return gamemode_request_start();
}
extern "C" int UnityExitGameMode() {
gamemode_request_end();
extern "C" int GameModeRequestEnd() {
return gamemode_request_end();
}
extern "C" int GameModeQueryStatus() {
return gamemode_query_status();
}