 }
 
 enum TestGender: Int {
+  case Unknown = 0
   case Female = 2
   case Male = 3
+}
+
+enum TestCountry: Int {
+  case Unknown = 0
+  case Germany = 2
+  case Austria = 3
+}
+
+extension TestCountry: Printable {
+  
+  var description: String {
+    switch self {
+    case .Germany:
+      return "Germany"
+    case .Austria:
+      return "Austria"
+    case .Unknown:
+      return "Unknown Country"
+    }
+  }
+
 }
 
 class BureaucracyTests: XCTestCase {

  func test01addSection() {
    form!.addSection("Test Section")
    XCTAssertEqual(form!.numberOfSections(), 1, "Form should contain a section after adding")
    XCTAssertEqual(form!.numberOfFieldsInSection(0), 0, "Section should not have any Elements yet")
    XCTAssertFalse(form!.serialize().isEmpty, "values function should return something when there is a section")
    if let section = form!.serialize().first {
      XCTAssertTrue(section.isEmpty, "the section values should be empty since there are no Elements added")
    }
    
    // is section setup correct
    let section = form!.sections.first!
    XCTAssertEqual(section.name, "Test Section", "Form should have the title set correct")
    XCTAssertTrue(section.form === form, "Form property of the section should be the form of the testclass")
    XCTAssertEqual(section.count, 0, "Section should contain elements yet")
  }
  
  func test02addForwardingElement() {
    
    //Add Section and ForwardingElement
    let testSection = form!.addSection("Test Section")
    let allProductsField = testSection.append(ForwardingElement(name: "Test Element"))
    

      allProductsField.formSection!.form.delegate!.didUpdateForm(allProductsField.formSection!.form)
    }
    
    // Test Form
    XCTAssertTrue(form?.item(indexPath: NSIndexPath(forRow: 0, inSection: 0)) === allProductsField, "Expected the field that was previously added to the form")
    XCTAssertEqual(form!.numberOfFieldsInSection(0), 1, "Section should have an element")
    let values = form!.serialize()
    XCTAssertNotNil(values.isEmpty, "There should be a value since there is an element in the section")
    XCTAssertEqual(values.count, 1, "There should only be one value since there is only one element in the section")
    XCTAssertFalse(values.first?["Test Element"] == nil, "ForwardingElement should not have a value")
    
    // Test Selection
    allProductsField.didSelect()
    XCTAssertTrue((form!.delegate! as FormTestDelegate).calledDidUpdateForm, "Selection did not update the form")
  }
  
  func test03addSegmentedFormField() {
    
    // Add Section and ForwardingElement
    let testSection = form!.addSection("Test Section")
    let segmentedField = SegmentedFormField<TestGender, Int, String>(name: "SegmentedField", value: .Female, values: [.Female, .Male])
    
