{"record":{"id":"eaddca04cddda759","repo":"bchavez/Bogus","slug":"gender-not-handled","errorCode":null,"errorMessage":"Gender not handled.","messagePattern":"Gender not handled\\.","errorType":"exception","errorClass":"ArgumentOutOfRangeException","httpStatus":null,"severity":"error","filePath":"Source/Bogus/Extensions/Sweden/ExtensionsForSweden.cs","lineNumber":96,"sourceCode":"      return individualNumber;\n   }\n\n   private static string GenerateIndividualNumber(Randomizer r, Gender gender, DateTime dateOfBirth, int dayOffset = 0)\n   {\n      var genderNumber = GetGenderNumber(r, gender);\n      var offsetDay = dateOfBirth.Day + dayOffset;\n      var p = dateOfBirth.ToString(\"yyyyMM\") + offsetDay.ToString(\"00\") + dateOfBirth.ToString(\"ff\") + genderNumber;\n      var checksum = GetLuhn(p.Substring(2));\n      return p + checksum;\n   }\n\n   private static int GetGenderNumber(Randomizer r, Gender gender)\n   {\n      if( gender is Gender.Male )\n         return r.Odd(1, 9);\n      if( gender is Gender.Female )\n         return r.Even(1, 9);\n      throw new ArgumentOutOfRangeException(nameof(gender), gender, \"Gender not handled.\");\n   }\n\n   private static int GetLuhn(string value)\n   {\n      // Luhn algorithm doubles every other number in the value.\n      // To get the correct checksum digit we aught to append a 0 on the sequence.\n      // If the result becomes a two digit number, subtract 9 from the value.\n      // If the total sum is not a 0, the last checksum value should be subtracted from 10.\n      // The resulting value is the check value that we use as control number.\n\n      // The value passed is a string, so we aught to get the actual integer value from each char (i.e., subtract '0' which is 48).\n      var t = value.ToCharArray().Select(d => d - 48).ToArray();\n      var sum = 0;\n      int temp;\n      for (var i = 0; i < t.Length; i++)\n      {\n         temp = t[i];\n         temp *= 2 - (i % 2);","sourceCodeStart":78,"sourceCodeEnd":114,"githubUrl":"https://github.com/bchavez/Bogus/blob/6ece18c5c22648ab4606e45a0aaf2f07fc5259e4/Source/Bogus/Extensions/Sweden/ExtensionsForSweden.cs#L78-L114","documentation":"ExtensionsForSweden.GetGenderNumber only handles Gender.Male and Gender.Female; any other value throws ArgumentOutOfRangeException. The Name.Gender enum defines only those two members, so under normal strongly-typed use this guard is unreachable - it is a defensive fallback for an enum value supplied via an invalid cast.","triggerScenarios":"Calling person.Personnummer() or person.Samordningsnummer() on a Person whose Gender was set to a value produced by casting an out-of-range int to Name.Gender.","commonSituations":"Deserializing a numeric gender from config/API and casting it to Name.Gender without validation; values other than 0 (Male) and 1 (Female) reach this guard.","solutions":["Only use Name.Gender.Male or Name.Gender.Female.","If gender comes from an int, validate Enum.IsDefined(typeof(Name.Gender), value) before assigning Person.Gender.","Let Bogus assign gender by default rather than overriding it."],"exampleFix":"// before\nperson.Gender = (Name.Gender)5;\nvar pn = person.Personnummer();\n\n// after\nperson.Gender = Enum.IsDefined(typeof(Name.Gender), incoming)\n    ? (Name.Gender)incoming\n    : Name.Gender.Male;\nvar pn = person.Personnummer();","handlingStrategy":"validation","validationCode":"if (!Enum.IsDefined(typeof(Name.Gender), person.Gender))\n    throw new ArgumentOutOfRangeException(nameof(person.Gender));\nvar pn = person.Personnummer();","typeGuard":"static bool IsValid(Name.Gender g) => g == Name.Gender.Male || g == Name.Gender.Female;","tryCatchPattern":null,"preventionTips":["Only assign Name.Gender.Male or Name.Gender.Female.","Validate Enum.IsDefined before casting an int to Name.Gender.","Let Bogus pick gender by default instead of overriding it."],"tags":["sweden","enum","argument-validation","national-id","defensive-guard"],"backgroundTag":null,"analyzedSha":"6ece18c5c22648ab4606e45a0aaf2f07fc5259e4","analyzedAt":"2026-08-13T21:08:15.463Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}