UNPKG

react-native-reanimated-carousel

Version:

Simple carousel component.fully implemented using Reanimated 2.Infinitely scrolling, very smooth.

2 lines 7.03 kB
var _parallax=require("./parallax");jest.mock("react-native-reanimated",function(){return{interpolate:jest.fn(function(value,inputRange,outputRange){var inputMin=inputRange[0];var inputMax=inputRange[inputRange.length-1];var outputMin=outputRange[0];var outputMax=outputRange[outputRange.length-1];if(value<=inputMin)return outputMin;if(value>=inputMax)return outputMax;var progress=(value-inputMin)/(inputMax-inputMin);return outputMin+progress*(outputMax-outputMin);}),Extrapolation:{CLAMP:"clamp"}};});describe("parallaxLayout",function(){var baseConfig={size:300,vertical:false};it("should create layout function with default config",function(){var layout=(0,_parallax.parallaxLayout)(baseConfig);expect(typeof layout).toBe("function");});it("should return transform object for horizontal layout",function(){var layout=(0,_parallax.parallaxLayout)(baseConfig);var result=layout(0);expect(result).toHaveProperty("transform");expect(result).toHaveProperty("zIndex");expect(result.transform).toHaveLength(2);expect(result.transform[0]).toHaveProperty("translateX");expect(result.transform[1]).toHaveProperty("scale");});it("should return transform object for vertical layout",function(){var verticalConfig=Object.assign({},baseConfig,{vertical:true});var layout=(0,_parallax.parallaxLayout)(verticalConfig);var result=layout(0);expect(result).toHaveProperty("transform");expect(result).toHaveProperty("zIndex");expect(result.transform).toHaveLength(2);expect(result.transform[0]).toHaveProperty("translateY");expect(result.transform[1]).toHaveProperty("scale");});it("should handle center position (value = 0)",function(){var layout=(0,_parallax.parallaxLayout)(baseConfig);var result=layout(0);expect(result.transform[0].translateX).toBe(0);expect(typeof result.transform[1].scale).toBe("number");});it("should handle left position (value = -1)",function(){var layout=(0,_parallax.parallaxLayout)(baseConfig);var result=layout(-1);expect(result.transform[0].translateX).toBe(-200);expect(typeof result.transform[1].scale).toBe("number");});it("should handle right position (value = 1)",function(){var layout=(0,_parallax.parallaxLayout)(baseConfig);var result=layout(1);expect(result.transform[0].translateX).toBe(200);expect(typeof result.transform[1].scale).toBe("number");});it("should handle custom parallaxScrollingOffset",function(){var modeConfig={parallaxScrollingOffset:50};var layout=(0,_parallax.parallaxLayout)(baseConfig,modeConfig);var leftResult=layout(-1);var rightResult=layout(1);expect(leftResult.transform[0].translateX).toBe(-250);expect(rightResult.transform[0].translateX).toBe(250);});it("should handle custom parallaxScrollingScale",function(){var modeConfig={parallaxScrollingScale:0.9};var layout=(0,_parallax.parallaxLayout)(baseConfig,modeConfig);var centerResult=layout(0);var sideResult=layout(-1);expect(typeof centerResult.transform[1].scale).toBe("number");expect(typeof sideResult.transform[1].scale).toBe("number");expect(centerResult.transform[1].scale).toBeGreaterThan(0);expect(sideResult.transform[1].scale).toBeGreaterThan(0);});it("should handle custom parallaxAdjacentItemScale",function(){var modeConfig={parallaxScrollingScale:0.9,parallaxAdjacentItemScale:0.7};var layout=(0,_parallax.parallaxLayout)(baseConfig,modeConfig);var centerResult=layout(0);var sideResult=layout(-1);expect(typeof centerResult.transform[1].scale).toBe("number");expect(typeof sideResult.transform[1].scale).toBe("number");expect(centerResult.transform[1].scale).toBeGreaterThan(0);expect(sideResult.transform[1].scale).toBeGreaterThan(0);});it("should handle vertical layout with custom config",function(){var verticalConfig=Object.assign({},baseConfig,{vertical:true});var modeConfig={parallaxScrollingOffset:80};var layout=(0,_parallax.parallaxLayout)(verticalConfig,modeConfig);var leftResult=layout(-1);var centerResult=layout(0);var rightResult=layout(1);expect(leftResult.transform[0].translateY).toBe(-220);expect(centerResult.transform[0].translateY).toBe(0);expect(rightResult.transform[0].translateY).toBe(220);});it("should handle edge case values",function(){var layout=(0,_parallax.parallaxLayout)(baseConfig);var farLeftResult=layout(-2);var farRightResult=layout(2);expect(typeof farLeftResult.transform[0].translateX).toBe("number");expect(typeof farLeftResult.transform[1].scale).toBe("number");expect(typeof farRightResult.transform[0].translateX).toBe("number");expect(typeof farRightResult.transform[1].scale).toBe("number");});it("should handle fractional values",function(){var layout=(0,_parallax.parallaxLayout)(baseConfig);var halfwayResult=layout(0.5);var quarterResult=layout(-0.25);expect(typeof halfwayResult.transform[0].translateX).toBe("number");expect(typeof halfwayResult.transform[1].scale).toBe("number");expect(typeof quarterResult.transform[0].translateX).toBe("number");expect(typeof quarterResult.transform[1].scale).toBe("number");});it("should handle zero size",function(){var zeroSizeConfig=Object.assign({},baseConfig,{size:0});var layout=(0,_parallax.parallaxLayout)(zeroSizeConfig);var result=layout(0);expect(result).toHaveProperty("transform");expect(result).toHaveProperty("zIndex");});it("should handle negative size",function(){var negativeSizeConfig=Object.assign({},baseConfig,{size:-100});var layout=(0,_parallax.parallaxLayout)(negativeSizeConfig);var result=layout(0);expect(result).toHaveProperty("transform");expect(result).toHaveProperty("zIndex");});it("should handle all config properties at once",function(){var fullModeConfig={parallaxScrollingOffset:75,parallaxScrollingScale:0.85,parallaxAdjacentItemScale:0.6};var layout=(0,_parallax.parallaxLayout)(baseConfig,fullModeConfig);var centerResult=layout(0);var sideResult=layout(-1);expect(typeof centerResult.transform[1].scale).toBe("number");expect(typeof sideResult.transform[1].scale).toBe("number");expect(sideResult.transform[0].translateX).toBe(-225);});it("should handle empty mode config",function(){var layout=(0,_parallax.parallaxLayout)(baseConfig,{});var result=layout(0);expect(typeof result.transform[1].scale).toBe("number");expect(result.transform[1].scale).toBeGreaterThan(0);expect(result.transform[1].scale).toBeLessThanOrEqual(1);});it("should handle undefined mode config",function(){var layout=(0,_parallax.parallaxLayout)(baseConfig,undefined);var result=layout(0);expect(typeof result.transform[1].scale).toBe("number");expect(result.transform[1].scale).toBeGreaterThan(0);expect(result.transform[1].scale).toBeLessThanOrEqual(1);});it("should maintain consistent zIndex calculation",function(){var layout=(0,_parallax.parallaxLayout)(baseConfig);var leftResult=layout(-1);var centerResult=layout(0);var rightResult=layout(1);expect(typeof leftResult.zIndex).toBe("number");expect(typeof centerResult.zIndex).toBe("number");expect(typeof rightResult.zIndex).toBe("number");expect(centerResult.zIndex).toBeGreaterThanOrEqual(leftResult.zIndex);expect(centerResult.zIndex).toBeGreaterThanOrEqual(rightResult.zIndex);});}); //# sourceMappingURL=parallax.test.js.map