More refactoring
Added first simple unit test
This commit is contained in:
@@ -46,6 +46,8 @@
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="TestDrawableFactory.cs" />
|
||||
<Compile Include="TestCreateDb.cs" />
|
||||
<Compile Include="MainActivity.cs" />
|
||||
<Compile Include="Resources\Resource.Designer.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
@@ -64,6 +66,14 @@
|
||||
<AndroidResource Include="Resources\Drawable\Icon.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\KeePassLib2Android\KeePassLib2Android.csproj">
|
||||
<Project>{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}</Project>
|
||||
<Name>KeePassLib2Android</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Kp2aBusinessLogic\Kp2aBusinessLogic.csproj">
|
||||
<Project>{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}</Project>
|
||||
<Name>Kp2aBusinessLogic</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\monodroid-unittesting\MonoDroidUnitTesting\MonoDroidUnitTesting.csproj">
|
||||
<Project>{a5f8fb02-00e0-4335-91ef-aeaa2c2f3c48}</Project>
|
||||
<Name>MonoDroidUnitTesting</Name>
|
||||
|
||||
4
src/Kp2aUnitTests/Resources/Resource.Designer.cs
generated
4
src/Kp2aUnitTests/Resources/Resource.Designer.cs
generated
@@ -26,6 +26,7 @@ namespace Kp2aUnitTests
|
||||
|
||||
public static void UpdateIdValues()
|
||||
{
|
||||
KeePassLib2Android.Resource.String.library_name = Kp2aUnitTests.Resource.String.library_name;
|
||||
}
|
||||
|
||||
public partial class Attribute
|
||||
@@ -98,6 +99,9 @@ namespace Kp2aUnitTests
|
||||
// aapt resource value: 0x7f040000
|
||||
public const int Hello = 2130968576;
|
||||
|
||||
// aapt resource value: 0x7f040002
|
||||
public const int library_name = 2130968578;
|
||||
|
||||
static String()
|
||||
{
|
||||
global::Android.Runtime.ResourceIdManager.UpdateIdValues();
|
||||
|
||||
97
src/Kp2aUnitTests/TestCreateDb.cs
Normal file
97
src/Kp2aUnitTests/TestCreateDb.cs
Normal file
@@ -0,0 +1,97 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using Java.IO;
|
||||
using KeePassLib;
|
||||
using KeePassLib.Keys;
|
||||
using KeePassLib.Serialization;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using keepass2android;
|
||||
|
||||
namespace Kp2aUnitTests
|
||||
{
|
||||
[TestClass]
|
||||
class TestCreateDb
|
||||
{
|
||||
[TestMethod]
|
||||
public void CreateAndSaveLocal()
|
||||
{
|
||||
IKp2aApp app = new TestKp2aApp();
|
||||
IOConnectionInfo ioc = new IOConnectionInfo {Path = "/mnt/sdcard/kp2atest/savetest.kdbx"};
|
||||
|
||||
File outputDir = new File("/mnt/sdcard/kp2atest/");
|
||||
outputDir.Mkdirs();
|
||||
File targetFile = new File(ioc.Path);
|
||||
if (targetFile.Exists())
|
||||
targetFile.Delete();
|
||||
|
||||
bool createSuccesful = false;
|
||||
//create the task:
|
||||
CreateDb createDb = new CreateDb(app, Application.Context, ioc, new ActionOnFinish((success, message) =>
|
||||
{ createSuccesful = success; if (!success)
|
||||
Assert.Fail(message);
|
||||
}), false);
|
||||
//run it:
|
||||
createDb.Run();
|
||||
//check expectations:
|
||||
Assert.IsTrue(createSuccesful);
|
||||
Assert.IsNotNull(app.GetDb());
|
||||
Assert.IsNotNull(app.GetDb().KpDatabase);
|
||||
//the create task should create two groups:
|
||||
Assert.AreEqual(2, app.GetDb().KpDatabase.RootGroup.Groups.Count());
|
||||
|
||||
//ensure the the database can be loaded from file:
|
||||
PwDatabase loadedDb = new PwDatabase();
|
||||
loadedDb.Open(ioc, new CompositeKey(), null);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
internal class TestKp2aApp : IKp2aApp
|
||||
{
|
||||
private Database _db;
|
||||
|
||||
public void SetShutdown()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public Database GetDb()
|
||||
{
|
||||
return _db;
|
||||
}
|
||||
|
||||
public void StoreOpenedFileAsRecent(IOConnectionInfo ioc, string keyfile)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public Database CreateNewDatabase()
|
||||
{
|
||||
TestDrawableFactory testDrawableFactory = new TestDrawableFactory();
|
||||
_db = new Database(testDrawableFactory, new TestKp2aApp());
|
||||
return _db;
|
||||
|
||||
}
|
||||
|
||||
public string GetResourceString(UiStringKey stringKey)
|
||||
{
|
||||
return stringKey.ToString();
|
||||
}
|
||||
|
||||
public bool GetBooleanPreference(PreferenceKey key)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public void AskYesNoCancel(UiStringKey titleKey, UiStringKey messageKey, EventHandler<DialogClickEventArgs> yesHandler, EventHandler<DialogClickEventArgs> noHandler,
|
||||
EventHandler<DialogClickEventArgs> cancelHandler, Context ctx)
|
||||
{
|
||||
yesHandler(null, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
27
src/Kp2aUnitTests/TestDrawableFactory.cs
Normal file
27
src/Kp2aUnitTests/TestDrawableFactory.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using System;
|
||||
using Android.Content.Res;
|
||||
using Android.Graphics.Drawables;
|
||||
using Android.Widget;
|
||||
using KeePassLib;
|
||||
using keepass2android;
|
||||
|
||||
namespace Kp2aUnitTests
|
||||
{
|
||||
internal class TestDrawableFactory : IDrawableFactory
|
||||
{
|
||||
public void AssignDrawableTo(ImageView iv, Resources res, PwDatabase db, PwIcon icon, PwUuid customIconId)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public Drawable GetIconDrawable(Resources res, PwDatabase db, PwIcon icon, PwUuid customIconId)
|
||||
{
|
||||
return res.GetDrawable(Resource.Drawable.Icon);
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
54
src/Kp2aUnitTests/TestKp2aApp.cs
Normal file
54
src/Kp2aUnitTests/TestKp2aApp.cs
Normal file
@@ -0,0 +1,54 @@
|
||||
using System;
|
||||
using Android.Content;
|
||||
using KeePassLib.Serialization;
|
||||
using keepass2android;
|
||||
|
||||
namespace Kp2aUnitTests
|
||||
{
|
||||
/// <summary>
|
||||
/// Very simple implementation of the Kp2aApp interface to be used in tests
|
||||
/// </summary>
|
||||
internal class TestKp2aApp : IKp2aApp
|
||||
{
|
||||
private Database _db;
|
||||
|
||||
public void SetShutdown()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public Database GetDb()
|
||||
{
|
||||
return _db;
|
||||
}
|
||||
|
||||
public void StoreOpenedFileAsRecent(IOConnectionInfo ioc, string keyfile)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public Database CreateNewDatabase()
|
||||
{
|
||||
TestDrawableFactory testDrawableFactory = new TestDrawableFactory();
|
||||
_db = new Database(testDrawableFactory, new TestKp2aApp());
|
||||
return _db;
|
||||
|
||||
}
|
||||
|
||||
public string GetResourceString(UiStringKey stringKey)
|
||||
{
|
||||
return stringKey.ToString();
|
||||
}
|
||||
|
||||
public bool GetBooleanPreference(PreferenceKey key)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public void AskYesNoCancel(UiStringKey titleKey, UiStringKey messageKey, EventHandler<DialogClickEventArgs> yesHandler, EventHandler<DialogClickEventArgs> noHandler,
|
||||
EventHandler<DialogClickEventArgs> cancelHandler, Context ctx)
|
||||
{
|
||||
yesHandler(null, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user