This one is rather simple: If the to boxes do not overlap, the right/lower side of each box has to be located before the left/upper side of the other. Think about it, that's really all you have to check here!
Given that the AABBs are stored by their minimum (upper left front corner) and maximum (lower right back corner) coordinates, the test would be done like this:
/// <summary>Test whether two axis aligned boxes are overlapping</summary>
/// <param name="firstMin">Minimum coordinate of first box</param>
/// <param name="firstMax">Maximum coordinate of first box</param>
/// <param name="secondMin">Minimum coordinate of second box</param>
/// <param name="secondMax">Maximum coordinate of second box</param>
/// <returns>True if the boxes are intersecting each other</returns>
public static bool StaticTest(
Vector3 firstMin, Vector3 firstMax, Vector3 secondMin, Vector3 secondMax
) {
return
(firstMin.X < secondMax.X) && (firstMax.X > secondMin.X) &&
(firstMin.Y < secondMax.Y) && (firstMax.Y > secondMin.Y) &&
(firstMin.Z < secondMax.Z) && (firstMax.Z > secondMin.Z);
}
/// <param name="firstMin">Minimum coordinate of first box</param>
/// <param name="firstMax">Maximum coordinate of first box</param>
/// <param name="secondMin">Minimum coordinate of second box</param>
/// <param name="secondMax">Maximum coordinate of second box</param>
/// <returns>True if the boxes are intersecting each other</returns>
public static bool StaticTest(
Vector3 firstMin, Vector3 firstMax, Vector3 secondMin, Vector3 secondMax
) {
return
(firstMin.X < secondMax.X) && (firstMax.X > secondMin.X) &&
(firstMin.Y < secondMax.Y) && (firstMax.Y > secondMin.Y) &&
(firstMin.Z < secondMax.Z) && (firstMax.Z > secondMin.Z);
}