Monday, January 11, 2010

Exploring options

One of the original goals of this project was to have some good test coverage, for once. Embarrassingly, I've never worked within any unit testing framework.

To that end, with the rewrite of Citrine, James and I are exploring two Microsoft Research Lab projects: Pex and Code Contracts.

Code Contracts provide a language agnostic .NET API for design-by-contract. At the simplest level, these allow for specifying guarantees with regards to function pre-conditions, post-conditions, and class invariants.

Hand-in-hand with this idea, Pex is a framework for generating parameterized unit tests (PUTs). Pex analyzes the code under test for branches and uses a constraint solver to generate input combinations that provide maximal coverage. It has great synergy with Code Contracts, capable of creating unit tests to check edge cases that one might not normally come up with on his/her own. In addition, the Pex library provides an easy-to-use API for mocks and interceptors.

I need to get more accustomed with these new tools before we delve too far into Citrine. :)

Thursday, January 7, 2010

Just kidding

We're now refactoring most of Citrine to adhere to good testability standards, and as an exercise in unit testing. More to come later.

Saturday, December 26, 2009

Citrine is stable.

Ha, it only took several months, but I'm now happy with the interface of Citrine... furthermore, it works.

Now it's a matter of edge testing and beginning design of Obsidian's architecture.

News!

I've been working hard this week to finish Citrine. It's in a very useable state now (the interface is basically finalized). We're polishing though... finalizing an internal data protocol, bug-testing, etc. Hopefully Obsidian will pick up again soon.

Saturday, September 12, 2009

Reporting in

No progress lately because school's started and I'm getting in a groove. This week is busy with interviews and netting a part-time job, so work will continue to be slow.

Monday, August 10, 2009

Slow Citrine news

Not much exciting happening afraid. I cleaned up the test suites for my own sake:

Aside from that, I've started the serializeable-object server/clients to build on the raw data model. Not much working code there yet, though.

Oh, and I fixed all the compiler warnings as far as XML doc goes. Exciting!

Thursday, August 6, 2009

Citrine update

I made a lot of progress on Citrine today. It seems the most cases of clean and faulty disconnects now properly raise events. I'm sort of torn between using separate events for the two cases, but right now it's just "ConnectionLost" and "ClientDisconnected". It works pretty well, and I have a working Silverlight policy server done too.

Testing and serialization to come.