convertToLHTest :: Spec
convertToLHTest =
  describe "Convert to Left Handed post process" $ do
    context "Converts a node" $ do
      let fixedRootNode = scene ^. sceneRootNode
      it "Itself" $
        (fixedRootNode ^. nodeTransformation) `shouldBe` Just flipedTransMatrix
      it "And its children" $ do
        let nodeChild = V.head (fixedRootNode ^. nodeChildren)
        (nodeChild ^. nodeTransformation) `shouldBe` Just flipedTransMatrix
    context "Converts a mesh" $ do
      let fixedMesh = V.head (scene ^. sceneMeshes)
      it "Vertices coordicates" $
        V.head (fixedMesh ^. meshVertices) `shouldBe` V3 1 2 (-3)
      it "Normals coordicates" $
        V.head (fixedMesh ^. meshNormals) `shouldBe` V3 4 5 (-6)
      it "Tangents" $
        V.head (fixedMesh ^. meshTangents) `shouldBe` V3 7 8 (-9)
      it "Bitangents" $
        V.head (fixedMesh ^. meshBitangents) `shouldBe` V3 (-1) (-3) 6
      it "Bones" $ do
        let fixedBone = V.head (fixedMesh ^. meshBones)
        (fixedBone ^. boneOffsetMatrix) `shouldBe` flipedTransMatrix
    context "Materials" $ do
      let fixedMaterial = V.head (scene ^. sceneMaterials)
      it "Texture map axis" $
        V.head (fixedMaterial ^. materialProperties) `shouldBe`
          MaterialTexMapAxis TextureTypeNone (V3 1 2 3)
    context "Animation nodes" $ do
      let fixedAnimation = V.head (scene ^. sceneAnimations)
          fixedNodeAnim = V.head (fixedAnimation ^. animationChannels)
      it "Position keys" $
        V.head (fixedNodeAnim ^. nodeAnimPositionKeys) `shouldBe`
          VectorKey 0.1 (V3 1 2 3)
      it "Rotation keys" $
        V.head (fixedNodeAnim ^. nodeAnimRotationKeys) `shouldBe`
          QuatKey 0.2 (Quaternion 1 (V3 1 2 3))
convertToLHTest :: Spec
convertToLHTest =
  describe "Convert to Left Handed post process" $ do
    context "Converts a node" $ do
      let fixedRootNode = scene ^. sceneRootNode
      it "Itself" $
        (fixedRootNode ^. nodeTransformation) `shouldBe` Just flipedTransMatrix
      it "And its children" $ do
        let nodeChild = V.head (fixedRootNode ^. nodeChildren)
        (nodeChild ^. nodeTransformation) `shouldBe` Just flipedTransMatrix
    context "Converts a mesh" $ do
      let fixedMesh = V.head (scene ^. sceneMeshes)
      it "Vertices coordicates" $
        V.head (fixedMesh ^. meshVertices) `shouldBe` V3 1 2 (-3)
      it "Normals coordicates" $
        V.head (fixedMesh ^. meshNormals) `shouldBe` V3 4 5 (-6)
      it "Tangents" $
        V.head (fixedMesh ^. meshTangents) `shouldBe` V3 7 8 (-9)
      it "Bitangents" $
        V.head (fixedMesh ^. meshBitangents) `shouldBe` V3 (-1) (-3) 6
      it "Bones" $ do
        let fixedBone = V.head (fixedMesh ^. meshBones)
        (fixedBone ^. boneOffsetMatrix) `shouldBe` flipedTransMatrix
    context "Materials" $ do
      let fixedMaterial = V.head (scene ^. sceneMaterials)
      it "Texture map axis" $
        V.head (fixedMaterial ^. materialProperties) `shouldBe`
          MaterialTexMapAxis TextureTypeNone (V3 1 2 3)
    context "Animation nodes" $ do
      let fixedAnimation = V.head (scene ^. sceneAnimations)
          fixedNodeAnim = V.head (fixedAnimation ^. animationChannels)
      it "Position keys" $
        V.head (fixedNodeAnim ^. nodeAnimPositionKeys) `shouldBe`
          VectorKey 0.1 (V3 1 2 3)
      it "Rotation keys" $
        V.head (fixedNodeAnim ^. nodeAnimRotationKeys) `shouldBe`
          QuatKey 0.2 (Quaternion 1 (V3 1 2 3))
convertToLHTest =
  describe "Convert to Left Handed post process" $ do
    context "Converts a node" $ do
      let fixedRootNode = scene ^. sceneRootNode
      it "Itself" $
        (fixedRootNode ^. nodeTransformation) `shouldBe` Just flipedTransMatrix
      it "And its children" $ do
        let nodeChild = V.head (fixedRootNode ^. nodeChildren)
        (nodeChild ^. nodeTransformation) `shouldBe` Just flipedTransMatrix
    context "Converts a mesh" $ do
      let fixedMesh = V.head (scene ^. sceneMeshes)
      it "Vertices coordicates" $
        V.head (fixedMesh ^. meshVertices) `shouldBe` V3 1 2 (-3)
      it "Normals coordicates" $
        V.head (fixedMesh ^. meshNormals) `shouldBe` V3 4 5 (-6)
      it "Tangents" $
        V.head (fixedMesh ^. meshTangents) `shouldBe` V3 7 8 (-9)
      it "Bitangents" $
        V.head (fixedMesh ^. meshBitangents) `shouldBe` V3 (-1) (-3) 6
      it "Bones" $ do
        let fixedBone = V.head (fixedMesh ^. meshBones)
        (fixedBone ^. boneOffsetMatrix) `shouldBe` flipedTransMatrix
    context "Materials" $ do
      let fixedMaterial = V.head (scene ^. sceneMaterials)
      it "Texture map axis" $
        V.head (fixedMaterial ^. materialProperties) `shouldBe`
          MaterialTexMapAxis TextureTypeNone (V3 1 2 3)
    context "Animation nodes" $ do
      let fixedAnimation = V.head (scene ^. sceneAnimations)
          fixedNodeAnim = V.head (fixedAnimation ^. animationChannels)
      it "Position keys" $
        V.head (fixedNodeAnim ^. nodeAnimPositionKeys) `shouldBe`
          VectorKey 0.1 (V3 1 2 3)
      it "Rotation keys" $
        V.head (fixedNodeAnim ^. nodeAnimRotationKeys) `shouldBe`
          QuatKey 0.2 (Quaternion 1 (V3 1 2 3))