test_msh = (
    msh_version = "4.1",
    raw_PhysicalNames = [
        "9",
        "0 1 Point1",
        "0 2 Point2",
        "0 3 Point3",
        "0 4 Point4",
        "1 5 Curve1",
        "1 6 Curve2",
        "1 7 Curve3",
        "1 8 Curve4",
        "2 9 Surface1"
    ],
    raw_Entities = SubString{String}[
        "4 4 1 0",
        "1 0 0 0 1 1 ",
        "2 1 0 0 1 2 ",
        "3 1 1 0 1 3 ",
        "4 0 1 0 1 4 ",
        "1 0 0 0 1 0 0 1 5 2 1 -2 ",
        "2 1 0 0 1 1 0 1 6 2 2 -3 ",
        "3 0 1 0 1 1 0 1 7 2 3 -4 ",
        "4 0 0 0 0 1 0 1 8 2 4 -1 ",
        "1 0 0 0 1 1 0 1 9 4 1 2 3 4 "
    ],
    raw_Nodes = SubString{String}[
        "9 30 1 30",
        "0 1 0 1",
        "1",
        "0 0 0",
        "0 2 0 1",
        "2",
        "1 0 0",
        "0 3 0 1",
        "3",
        "1 1 0",
        "0 4 0 1",
        "4",
        "0 1 0",
        "1 1 0 3",
        "5",
        "6",
        "7",
        "0.2499999999994121 0 0",
        "0.499999999998694 0 0",
        "0.7499999999993416 0 0",
        "1 2 0 3",
        "8",
        "9",
        "10",
        "1 0.2499999999994121 0",
        "1 0.499999999998694 0",
        "1 0.7499999999993416 0",
        "1 3 0 3",
        "11",
        "12",
        "13",
        "0.7500000000003465 1 0",
        "0.5000000000020591 1 0",
        "0.2500000000010404 1 0",
        "1 4 0 3",
        "14",
        "15",
        "16",
        "0 0.7500000000003465 0",
        "0 0.5000000000020591 0",
        "0 0.2500000000010404 0",
        "2 1 0 14",
        "17",
        "18",
        "19",
        "20",
        "21",
        "22",
        "23",
        "24",
        "25",
        "26",
        "27",
        "28",
        "29",
        "30",
        "0.3640932128839348 0.7867687832230399 0",
        "0.2110423218192967 0.3753337416957934 0",
        "0.6146003733357942 0.2544869979106268 0",
        "0.8080509614599705 0.6243689539557383 0",
        "0.1979210047255827 0.6215671767908416 0",
        "0.4308090314147045 0.5056502726999197 0",
        "0.3712961061742487 0.2167990069479849 0",
        "0.6139924015723897 0.7478815024664035 0",
        "0.8112741566735278 0.3855439771726542 0",
        "0.6557453848912773 0.5035863408410685 0",
        "0.1830127018930926 0.816987298107279 0",
        "0.816987298107459 0.8169872981071898 0",
        "0.1830127018926974 0.1830127018931337 0",
        "0.8351749060017326 0.1780061950165386 0"
    ],
    raw_Elements = SubString{String}[
        "9 62 1 62",
        "0 1 15 1",
        "1 1 ",
        "0 2 15 1",
        "2 2 ",
        "0 3 15 1",
        "3 3 ",
        "0 4 15 1",
        "4 4 ",
        "1 1 1 4",
        "5 1 5 ",
        "6 5 6 ",
        "7 6 7 ",
        "8 7 2 ",
        "1 2 1 4",
        "9 2 8 ",
        "10 8 9 ",
        "11 9 10 ",
        "12 10 3 ",
        "1 3 1 4",
        "13 3 11 ",
        "14 11 12 ",
        "15 12 13 ",
        "16 13 4 ",
        "1 4 1 4",
        "17 4 14 ",
        "18 14 15 ",
        "19 15 16 ",
        "20 16 1 ",
        "2 1 2 42",
        "21 19 22 23 ",
        "22 17 22 24 ",
        "23 22 19 26 ",
        "24 24 22 26 ",
        "25 22 18 23 ",
        "26 17 21 22 ",
        "27 20 24 26 ",
        "28 12 13 17 ",
        "29 15 16 18 ",
        "30 9 10 20 ",
        "31 6 7 19 ",
        "32 19 25 26 ",
        "33 14 15 21 ",
        "34 11 12 24 ",
        "35 5 6 23 ",
        "36 8 9 25 ",
        "37 21 18 22 ",
        "38 15 18 21 ",
        "39 12 17 24 ",
        "40 6 19 23 ",
        "41 9 20 25 ",
        "42 4 14 27 ",
        "43 3 11 28 ",
        "44 13 4 27 ",
        "45 16 1 29 ",
        "46 1 5 29 ",
        "47 10 3 28 ",
        "48 7 2 30 ",
        "49 2 8 30 ",
        "50 14 21 27 ",
        "51 11 24 28 ",
        "52 5 23 29 ",
        "53 8 25 30 ",
        "54 17 13 27 ",
        "55 20 10 28 ",
        "56 18 16 29 ",
        "57 19 7 30 ",
        "58 21 17 27 ",
        "59 23 18 29 ",
        "60 24 20 28 ",
        "61 25 19 30 ",
        "62 25 20 26 "
    ]
)

test_physicals = (
    physicalTag0DtoName = Dict(
        4 => "Point4",
        2 => "Point2",
        3 => "Point3",
        1 => "Point1"
    ),
    physicalTag1DtoName = Dict(
        7 => "Curve3",
        5 => "Curve1",
        8 => "Curve4",
        6 => "Curve2"
    ),
    physicalTag2DtoName = Dict(
        9 => "Surface1"
    ),
    physicalTag3DtoName = Dict{Int64,String}()
)

test_entities = (
    pointTagtoPhysicalTag = Dict(
        4 => 4,
        2 => 2,
        3 => 3,
        1 => 1
    ),
    curveTagtoPhysicalTag = Dict(
        4 => 8,
        2 => 6,
        3 => 7,
        1 => 5
    ),
    surfaceTagtoPhysicalTag = Dict(
        1 => 9
    ),
    volumeTagtoPhysicalTag = Dict{Int64,Int64}()
)

test_nodes = (
    nodeTag = [
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14,
        15,
        16,
        17,
        18,
        19,
        20,
        21,
        22,
        23,
        24,
        25,
        26,
        27,
        28,
        29,
        30
    ],
    vx = [
        0.0,
        1.0,
        1.0,
        0.0,
        0.2499999999994121,
        0.499999999998694,
        0.7499999999993416,
        1.0,
        1.0,
        1.0,
        0.7500000000003465,
        0.5000000000020591,
        0.2500000000010404,
        0.0,
        0.0,
        0.0,
        0.3640932128839348,
        0.2110423218192967,
        0.6146003733357942,
        0.8080509614599705,
        0.1979210047255827,
        0.4308090314147045,
        0.3712961061742487,
        0.6139924015723897,
        0.8112741566735278,
        0.6557453848912773,
        0.1830127018930926,
        0.816987298107459,
        0.1830127018926974,
        0.8351749060017326
    ],
    vy = [
        0.0,
        0.0,
        1.0,
        1.0,
        0.0,
        0.0,
        0.0,
        0.2499999999994121,
        0.499999999998694,
        0.7499999999993416,
        1.0,
        1.0,
        1.0,
        0.7500000000003465,
        0.5000000000020591,
        0.2500000000010404,
        0.7867687832230399,
        0.3753337416957934,
        0.2544869979106268,
        0.6243689539557383,
        0.6215671767908416,
        0.5056502726999197,
        0.2167990069479849,
        0.7478815024664035,
        0.3855439771726542,
        0.5035863408410685,
        0.816987298107279,
        0.8169872981071898,
        0.1830127018931337,
        0.1780061950165386
    ],
    vz = [
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
    ]
)

test_elements = (
    entityTag1D = [
        1,
        1,
        1,
        1,
        2,
        2,
        2,
        2,
        3,
        3,
        3,
        3,
        4,
        4,
        4,
        4
    ],
    entityTag2D = [
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1
    ],
    entityTag3D = Int64[],
    elementType1D = [
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1
    ],
    elementType2D = [
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2,
        2
    ],
    elementType3D = Int64[],
    elementTag1D = [
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14,
        15,
        16,
        17,
        18,
        19,
        20
    ],
    elementTag2D = [
        21,
        22,
        23,
        24,
        25,
        26,
        27,
        28,
        29,
        30,
        31,
        32,
        33,
        34,
        35,
        36,
        37,
        38,
        39,
        40,
        41,
        42,
        43,
        44,
        45,
        46,
        47,
        48,
        49,
        50,
        51,
        52,
        53,
        54,
        55,
        56,
        57,
        58,
        59,
        60,
        61,
        62
    ],
    elementTag3D = Int64[],
    nodeTags1D = [
        [1, 5],
        [5, 6],
        [6, 7],
        [7, 2],
        [2, 8],
        [8, 9],
        [9, 10],
        [10, 3],
        [3, 11],
        [11, 12],
        [12, 13],
        [13, 4],
        [4, 14],
        [14, 15],
        [15, 16],
        [16, 1]
    ],
    nodeTags2D = [
        [19, 22, 23],
        [17, 22, 24],
        [22, 19, 26],
        [24, 22, 26],
        [22, 18, 23],
        [17, 21, 22],
        [20, 24, 26],
        [12, 13, 17],
        [15, 16, 18],
        [9, 10, 20],
        [6, 7, 19],
        [19, 25, 26],
        [14, 15, 21],
        [11, 12, 24],
        [5, 6, 23],
        [8, 9, 25],
        [21, 18, 22],
        [15, 18, 21],
        [12, 17, 24],
        [6, 19, 23],
        [9, 20, 25],
        [4, 14, 27],
        [3, 11, 28],
        [13, 4, 27],
        [16, 1, 29],
        [1, 5, 29],
        [10, 3, 28],
        [7, 2, 30],
        [2, 8, 30],
        [14, 21, 27],
        [11, 24, 28],
        [5, 23, 29],
        [8, 25, 30],
        [17, 13, 27],
        [20, 10, 28],
        [18, 16, 29],
        [19, 7, 30],
        [21, 17, 27],
        [23, 18, 29],
        [24, 20, 28],
        [25, 19, 30],
        [25, 20, 26]
    ],
    nodeTags3D = Array{Int64,1}[]
)

using MeshCore.Exports
using StaticArrays
test_xyz = reshape([test_nodes.vx; test_nodes.vy], length(test_nodes.vx), 2)
test_N, test_T = size(test_xyz, 2), eltype(test_xyz)
test_locs = VecAttrib([SVector{test_N,test_T}(test_xyz[i, :]) for i in 1:size(test_xyz, 1)])
test_vertices = ShapeColl(P1, length(test_locs), "vertices")
test_vertices.attributes["geom"] = test_locs
test_shapes = ShapeColl(T3, size(test_elements.nodeTags2D, 1), "elements")
test_ir20 = IncRel(test_shapes, test_vertices, test_elements.nodeTags2D)
