NextGenSoftware.Holochain.HoloNET.Client.TestHarness 3.0.2

dotnet add package NextGenSoftware.Holochain.HoloNET.Client.TestHarness --version 3.0.2
NuGet\Install-Package NextGenSoftware.Holochain.HoloNET.Client.TestHarness -Version 3.0.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="NextGenSoftware.Holochain.HoloNET.Client.TestHarness" Version="3.0.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add NextGenSoftware.Holochain.HoloNET.Client.TestHarness --version 3.0.2
#r "nuget: NextGenSoftware.Holochain.HoloNET.Client.TestHarness, 3.0.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install NextGenSoftware.Holochain.HoloNET.Client.TestHarness as a Cake Addin
#addin nuget:?package=NextGenSoftware.Holochain.HoloNET.Client.TestHarness&version=3.0.2

// Install NextGenSoftware.Holochain.HoloNET.Client.TestHarness as a Cake Tool
#tool nuget:?package=NextGenSoftware.Holochain.HoloNET.Client.TestHarness&version=3.0.2

HoloNET Test Harness

Test Harness for HoloNET Holochain Client.

https://github.com/holochain-open-dev/holochain-client-csharp
https://github.com/NextGenSoftwareUK/holochain-client-csharp

You need to clone the following repo: https://github.com/holochain/happ-build-tutorial

And follow the instructions here: https://github.com/holochain-open-dev/wiki/wiki/Installing-Holochain--&-Building-hApps-Natively-On-Windows

Once you have Holochain setup on your machine and got the example hApp ready above, you need to copy it into a hApps folder in the root of the output folder (Debug or Release) where you installed this Test Harness package. HoloNET will be looking for it there.

The Test Harness sets the paths to the test hApp you compiled above using the following lines:

_holoNETClientAppAgent.Config.FullPathToRootHappFolder = string.Concat(Environment.CurrentDirectory, @"\hApps\happ-build-tutorial-develop");
_holoNETClientAppAgent.Config.FullPathToCompiledHappFolder = string.Concat(Environment.CurrentDirectory, @"\hApps\happ-build-tutorial-develop\workdir\happ");

If you wish to run the OASIS test (real world use case saving and loading an entry) then you will need to clone this repo:
https://github.com/NextGenSoftwareUK/OASIS-Holochain-hApp

The Test Harness will set the paths to the OASIS hApp you compiled above using the following lines:

_holoNETClientAppAgent.Config.FullPathToRootHappFolder = string.Concat(Environment.CurrentDirectory, @"\hApps\OASIS-Holochain-hApp");
_holoNETClientAppAgent.Config.FullPathToCompiledHappFolder = string.Concat(Environment.CurrentDirectory, @"\hApps\OASIS-Holochain-hApp\zomes\workdir\happ");

Finally, from within your app simply call the following method:

using NextGenSoftware.Holochain.HoloNET.Client.TestHarness;

await HoloNETTestHarness.TestHoloNETClientAsync(TestToRun testToRun);

You can pass in one of these values:

Test Description
WhoAmI Will call zome function whoami on the whoami zome (part of the happ-build-tutorial above).
Numbers Will call zome function add_ten on the numbers zome (part of the happ-build-tutorial above).
Signal Will call zome function test_signal_as_string on the oasis zome.
SaveLoadOASISEntryWithTypeOfEntryDataObject Will call the zome function create_entry_avatar on the oasis zome and once it receives the ActionHash back from the Holochain Conductor, it will load that entry using get_entry_avatar zome function (part of the OASIS hApp above). It will then map the data returned onto a new instance of the type passed in to CallZomeFunction function. See main HoloNET README for more info...
SaveLoadOASISEntryWithEntryDataObject Will call the zome function create_entry_avatar on the oasis zome and once it receives the ActionHash back from the Holochain Conductor, it will load that entry using get_entry_avatar zome function (part of the OASIS hApp above). It will then map the data returned onto the object passed in to CallZomeFunction function. See main HoloNET README for more info...
SaveLoadOASISEntryUsingSingleHoloNETAuditEntryBaseClass Will test the new HoloNETAuditEntryBaseClass by extending it with the Avatar class. It will call create_entry_avatar, get_entry_avatar, update_entry_avatar & delete_entry_avatar on the oasis zome and verify the results are as expected. This version will instantiate its own internal HoloNET Client to make calls to the Holochain Conductor.
SaveLoadOASISEntryUsingMultipleHoloNETAuditEntryBaseClasses Will test the new HoloNETAuditEntryBaseClass by extending it with the AvatarMultiple & Holon class. It will call create_entry_avatar, get_entry_avatar, update_entry_avatar & delete_entry_avatar on the oasis zome and verify the results are as expected. This version passes in a HoloNETClient instance that is shared between the AvatarMultiple & Holon classes.
LoadTestNumbers Will call zome function add_ten on the numbers zome 100 times (part of the happ-build-tutorial above).
LoadTestSaveLoadOASISEntry Will call SaveLoadOASISEntry test 100 times (part of the OASIS happ above).

You can also view the full source and run the Test Harness (and edit to suit your needs etc) here:
https://github.com/holochain-open-dev/holochain-client-csharp/tree/main/NextGenSoftware.Holochain.HoloNET.Client.TestHarness

NuGet Package:
https://www.nuget.org/packages/NextGenSoftware.Holochain.HoloNET.Client.TestHarness

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
3.0.2 48 4/19/2024
2.2.0 166 5/22/2023
2.1.4 160 4/27/2023
2.1.3 199 4/2/2023
2.1.2 237 3/18/2023
2.1.0 248 2/6/2023
2.0.2 285 1/2/2023
2.0.1 264 12/29/2022
2.0.0 255 12/28/2022
1.3.1 394 10/7/2022
1.3.0 379 10/7/2022
1.2.0 368 10/6/2022
1.1.1 346 9/29/2022
1.1.0 397 9/29/2022
1.0.2 410 8/24/2022
1.0.1 417 8/24/2022
1.0.0 391 8/23/2022

This release is a MAJOR release and milestone, HoloNET has been re-written from the ground up with many improvements, bug fixes etc. Part of this includes making it compatible with the latest beta version of Holochain. It has also been upgraded to work with the latest version of .NET (v8.0) so has even further performance improvements, bug fixes, etc.

HoloNETClient has now been split out into HoloNETClientAppAgent, HoloNETClientApp & HoloNETClientAdmin so is now more in line with the rust and js clients so existing hc devs will now find it more familiar! ;-)

This release also features the new HoloNET ORM (Object Relational Maping) package. This consists of the HoloNETEntryBase, HoloNETAuditEntryBase, HoloNETCollection and HoloNETObservsableCollection classes. The first two can be extended to create your HoloNET Entry models that map directly onto your data structs in your rust hApp zome code. The second two are collections of these entries. You can then simply call basic CRUD methods on your classes such as Load, Save, Delete, etc making it very quick and easy to build hApps. You also get change tracking, version control & rollback functionality for free. More documentation will be coming soon for this...

HoloNET ORM allows any existing .net app/website/game/service to be rapidly and quickly converted to a Holochain hApp with very little code changes (you can simply add a new attribute to the properties in your models) and it will now map to your rust hApp structs (which WEB5 STAR ODK/HDK) can also dynamically generate (it generates rust and c# code). Your hAPP will also be metaverse ready because STAR is also a interoperable metaverse generator (hence the name! ;-) ) and can also connect & bridge to any web2 or web3 provider thanks to it being built on the WEB4 OASIS API.

This release also features a new HoloNET Manager UI (think Launcher/Dev Store for .net and then some!) which show cases all of the advanced features of HoloNET Client and HoloNET ORM.  This has many generic backend and UI components that can be used to allow other .net devs to rapidly construct their own .net hApps using HoloNET HDK. Yes, that is right, this client has grown so much now that it is now in a number of packages forming the official Holochain .NET HDK. This includes the WEB5 STAR ODK/HDK No/Low Code Generator allowing you to generate hApps built on top of the HoloNET Client and HoloNET ORM from simple metadata (this part is in alpha and will be shortly released). The HoloNET Manager is currently implemented in WPF but we have plans to port this to Uno, MAUI & OpenSilver meaning it can run natively on Windows, Mac, Linux, TV's, IPads, tablets, android, IOS & web. The work for this has already begun so expect future releases soon...

This release now fully implements the full Holochain Conductor Admin API so is now on par with the javascript and rust clients.

Finally this release also features HoloNET HyperNET allowing Unity and Unreal games to implement lag free P2P networking with near unlimited number of players to play online smashing previous limitations on classic cloud/server hosting.

This is the BIGGEST update to HoloNET to date and is pretty much a whole new product now! ;-)

**NOTE: The documentation is still for the previous version, please bare with us while we update this soon... thank you!**

*Full Changes Below:*
Too many to list here, please view the changelog below.

*Full Changelog:* https://github.com/holochain-open-dev/holochain-client-csharp/compare/v2.2.0...v3.0.0

NuGet Packages:

[NextGenSoftware.Holochain.HoloNET.Client](NextGenSoftware.Holochain.HoloNET.Client)
Lightweight version that does not come with the holochain binaries (hc.exe and holochain.exe).

[NextGenSoftware.Holochain.HoloNET.Client.Embedded](NextGenSoftware.Holochain.HoloNET.Client.Embedded)
This version comes with the holochain binaries (hc.exe and holochain.exe) integrated.

[NextGenSoftware.Holochain.HoloNET.Client.TestHarness](NextGenSoftware.Holochain.HoloNET.Client.TestHarness)
A console test harness for HoloNET Client.

[NextGenSoftware.Holochain.HoloNET.ORM](NextGenSoftware.Holochain.HoloNET.ORM)
The new HoloNET ORM (Object Relational Mapping) allowing very easy & rapid development of hApps. This consists of the HoloNETEntryBase, HoloNETAuditEntryBase, HoloNETCollection and HoloNETObservsableCollection classes. The first two can be extended to create your HoloNET Entry models that map directly onto your data structs in your rust hApp zome code. The second two are collections of these entries. You can then simply call basic CRUD methods on your classes such as Load, Save, Delete, etc making it very quick and easy to build hApps. You also get change tracking, version control & rollback functionality for free. HoloNET ORM allows any existing .net app/website/game/service to be rapidly and quickly converted to a Holochain hApp with very little code changes (you can simply add a new attribute to the properties in your models) and it will now map to your rust hApp structs (which WEB5 [NextGenSoftware.OASIS.STAR](NextGenSoftware.OASIS.STAR)) can also dynamically generate (it generates rust and c# code). More documentation will be coming soon for this...

[NextGenSoftware.Holochain.HoloNET.ORM.Embedded](NextGenSoftware.Holochain.HoloNET.ORM.Embedded)
This is exactly the same as above except it is using the embedded version of the HoloNET Client so it is integrated with the Holochain Conductor binaries.

[NextGenSoftware.Holochain.HoloNET.Manager](NextGenSoftware.Holochain.HoloNET.Manager)
The new UI to HoloNET Client & HoloNET ORM show casing all of their advanced features.  This has many generic backend and UI components that can be used to allow other .net devs to rapidly construct their own .net hApps using HoloNET HDK (HoloNET Client, HoloNET ORM, HoloNET Manager, WEB5 STAR ODK/HDK & HoloNET HyperNET). The HoloNET Manager is currently implemented in WPF but we have plans to port this to Uno, MAUI & OpenSilver meaning it can run natively on Windows, Mac, Linux, TV's, IPads, tablets, android, IOS & web. The work for this has already begun so expect future releases soon...

[NextGenSoftware.Holochain.HoloNET.Manager.Embedded](NextGenSoftware.Holochain.HoloNET.Manager.Embedded)
This is exactly the same as above except it is using the embedded version of the HoloNET Client so it is integrated with the Holochain Conductor binaries.

[NextGenSoftware.Holochain.HoloNET.HDK](NextGenSoftware.Holochain.HoloNET.HDK)
The new HoloNET HDK consisting of HoloNET Client, HoloNET ORM, HoloNET Manager, WEB5 STAR ODK/HDK & HoloNET HyperNET. This package contains a plugin to the generic WEB5 STAR ODK No/Low Code Generator extending it so it can generate hApps from metadata built on top of the HoloNET Client/ORM. Release Coming Soon...

[NextGenSoftware.Holochain.HoloNET.HDK.Embedded](NextGenSoftware.Holochain.HoloNET.HDK.Embedded)
This is exactly the same as above except it is using the embedded version of the HoloNET Client so it is integrated with the Holochain Conductor binaries.

[NextGenSoftware.OASIS.STAR](NextGenSoftware.OASIS.STAR)
The new No/Low Code Generator allowing you to generate code for any supported OASIS Provider (web2 and web3) and currently supports Holochain, IPFS, Solana, EOS, Ethereum, Telos, SEEDS, MongoDB, SQLLite, Neo4j & Azure. The generated code runs on top of OASIS/STAR COSMIC ORM making it a very easy and powerful way to share data between any web2 or web3 provider. Release Coming Soon...

[NextGenSoftware.Holochain.HoloNET.HyperNET](NextGenSoftware.Holochain.HoloNET.HyperNET)
This is built on top of the HoloNET Client & HoloNET ORM and allows Unity and Unreal games to implement lag free P2P networking allowing near unlimited number of players to play online smashing previous limitations on classic cloud/server hosting. Release Coming Soon...

[NextGenSoftware.Holochain.HoloNET.HyperNET.Embedded](NextGenSoftware.Holochain.HoloNET.HyperNET.Embedded)
This is exactly the same as above except it is using the embedded version of the HoloNET Client so it is integrated with the Holochain Conductor binaries.