예제 #1
0
        void JsonTimeStampHandlesAllFormats(UUnitTestContext testContext)
        {
            string expectedJson, actualJson;
            DateTime expectedTime;
            ObjWithTimes actualObj = new ObjWithTimes();

            for (int i = 0; i < _examples.Length; i++)
            {
                // Define the time deserialization expectation
                testContext.True(DateTime.TryParseExact(_examples[i], PlayFabUtil._defaultDateTimeFormats, CultureInfo.CurrentCulture, DateTimeStyles.RoundtripKind, out expectedTime), "Index: " + i + "/" + _examples.Length + ", " + _examples[i]);

                // De-serialize the time using json
                expectedJson = "{\"timestamp\":\"" + _examples[i] + "\"}"; // We are provided a json string with every random time format
                actualObj = JsonWrapper.DeserializeObject<ObjWithTimes>(expectedJson, PlayFabUtil.ApiSerializerStrategy);
                actualJson = JsonWrapper.SerializeObject(actualObj, PlayFabUtil.ApiSerializerStrategy);

                if (i == PlayFabUtil.DEFAULT_UTC_OUTPUT_INDEX) // This is the only case where the json input will match the json output
                    testContext.StringEquals(expectedJson, actualJson);

                // Verify that the times match
                double diff = (expectedTime - actualObj.timestamp).TotalSeconds; // We expect that we have parsed the time correctly according to expectations
                testContext.True(diff < 1,
                    "\nActual time: " + actualObj.timestamp + " vs Expected time: " + expectedTime + ", diff: " + diff +
                    "\nActual json: " + actualJson + " vs Expected json: " + expectedJson
                );
            }
            testContext.EndTest(UUnitFinishState.PASSED, null);
        }
예제 #2
0
        public override void SetUp(UUnitTestContext testContext)
        {
            if (EXEC_ONCE)
            {
                Dictionary<string, string> testInputs;
                string filename = "C:/depot/pf-main/tools/SDKBuildScripts/testTitleData.json"; // TODO: Figure out how to not hard code this
                if (File.Exists(filename))
                {
                    string testInputsFile = PlayFabUtil.ReadAllFileText(filename);

                    testInputs = JsonWrapper.DeserializeObject<Dictionary<string, string>>(testInputsFile, PlayFabUtil.ApiSerializerStrategy);
                }
                else
                {
                    Debug.LogError("Loading testSettings file failed: " + filename + ", loading defaults.");
                    testInputs = new Dictionary<String,String>();
                    testInputs["titleId"] = "6195";
                    testInputs["developerSecretKey"] = "hahahahahafatchance";
                    testInputs["titleCanUpdateSettings"] = "true";
                    testInputs["userName"] = "******";
                    testInputs["userEmail"] = "*****@*****.**";
                    testInputs["userPassword"] = "******";
                }
                SetTitleInfo(testInputs);
                EXEC_ONCE = false;
            }

            if (!TITLE_INFO_SET)
                testContext.Skip(); // We cannot do client tests if the titleId is not given
        }
예제 #3
0
        void TimeStampHandlesAllFormats(UUnitTestContext testContext)
        {
            DateTime actualTime;
            var formats = PlayFabUtil._defaultDateTimeFormats;

            for (int i = 0; i < _examples.Length; i++)
            {
                string expectedFormat = i < formats.Length ? formats[i] : "default";
                testContext.True(DateTime.TryParseExact(_examples[i], formats, CultureInfo.CurrentCulture, DateTimeStyles.RoundtripKind, out actualTime), "Index: " + i + "/" + _examples.Length + ", " + _examples[i] + " with " + expectedFormat);
            }

            DateTime expectedTime = DateTime.Now;
            for (int i = 0; i < formats.Length; i++)
            {
                string timeString = expectedTime.ToString(formats[i], CultureInfo.CurrentCulture);
                testContext.True(DateTime.TryParseExact(timeString, formats, CultureInfo.CurrentCulture, DateTimeStyles.RoundtripKind, out actualTime), "Index: " + i + "/" + formats.Length + ", " + formats[i] + " with " + timeString);
                testContext.True((actualTime - expectedTime).TotalSeconds < 1, "Expected: " + expectedTime + " vs actual:" + actualTime);
            }
            testContext.EndTest(UUnitFinishState.PASSED, null);
        }
예제 #4
0
 public override void TearDown(UUnitTestContext testContext)
 {
 }
예제 #5
0
        public void EnumConversionTest_Serialize(UUnitTestContext testContext)
        {
            string expectedJson, actualJson;
            EnumConversionTestClass expectedObj = new EnumConversionTestClass(), actualObj;
            expectedObj.enumList = new List<testRegion>() { testRegion.USEast, testRegion.USCentral, testRegion.Japan };
            expectedObj.enumArray = new testRegion[] { testRegion.USEast, testRegion.USCentral, testRegion.Japan };
            expectedObj.enumValue = testRegion.Australia;
            expectedObj.optEnumValue = null;

            expectedJson = "{\"enumList\":[\"USEast\",\"USCentral\",\"Japan\"],\"enumArray\":[\"USEast\",\"USCentral\",\"Japan\"],\"enumValue\":\"Australia\",\"optEnumValue\":null}";

            actualObj = JsonWrapper.DeserializeObject<EnumConversionTestClass>(expectedJson, PlayFabUtil.ApiSerializerStrategy);
            actualJson = JsonWrapper.SerializeObject(actualObj, PlayFabUtil.ApiSerializerStrategy);

            testContext.StringEquals(expectedJson.Replace(" ", "").Replace("\n", ""), actualJson.Replace(" ", "").Replace("\n", ""));
            testContext.ObjEquals(expectedObj, actualObj);
            testContext.EndTest(UUnitFinishState.PASSED, null);
        }
예제 #6
0
        public void WriteEvent(UUnitTestContext testContext)
        {
            var request = new WriteClientPlayerEventRequest
            {
                EventName = "ForumPostEvent",
                Timestamp = DateTime.UtcNow,
                Body = new Dictionary<string, object>
                {
                    { "Subject", "My First Post" },
                    { "Body", "My awesome Post." }
                }
            };

            PlayFabClientAPI.WritePlayerEvent(request, PlayFabUUnitUtils.ApiCallbackWrapper<WriteEventResponse>(testContext, WriteEventCallback), SharedErrorCallback, testContext);
        }
예제 #7
0
 public void AccountInfo(UUnitTestContext testContext)
 {
     GetAccountInfoRequest request = new GetAccountInfoRequest
     {
         PlayFabId = _playFabId
     };
     PlayFabClientAPI.GetAccountInfo(request, PlayFabUUnitUtils.ApiCallbackWrapper<GetAccountInfoResult>(testContext, AcctInfoCallback), SharedErrorCallback, testContext);
 }
예제 #8
0
 public void ClientLeaderBoard(UUnitTestContext testContext)
 {
     var clientRequest = new GetLeaderboardRequest();
     clientRequest.MaxResultsCount = 3;
     clientRequest.StatisticName = TEST_STAT_NAME;
     PlayFabClientAPI.GetLeaderboard(clientRequest, PlayFabUUnitUtils.ApiCallbackWrapper<GetLeaderboardResult>(testContext, GetClientLbCallback), SharedErrorCallback, testContext);
 }
예제 #9
0
        public void UserStatisticsApi(UUnitTestContext testContext)
        {
            if (!TITLE_CAN_UPDATE_SETTINGS)
            {
                testContext.EndTest(UUnitFinishState.SKIPPED, "This title cannot update statistics from the client");
                return;
            }

            var getRequest = new GetUserStatisticsRequest();
            PlayFabClientAPI.GetUserStatistics(getRequest, PlayFabUUnitUtils.ApiCallbackWrapper<GetUserStatisticsResult>(testContext, GetUserStatsCallback1), SharedErrorCallback, testContext);
        }
예제 #10
0
 public void LoginOrRegister(UUnitTestContext testContext)
 {
     var loginRequest = new LoginWithCustomIDRequest();
     loginRequest.CustomId = PlayFabSettings.BuildIdentifier;
     loginRequest.CreateAccount = true;
     PlayFabClientAPI.LoginWithCustomID(loginRequest, PlayFabUUnitUtils.ApiCallbackWrapper<LoginResult>(testContext, LoginCallback), SharedErrorCallback, testContext);
 }
예제 #11
0
 public override void TearDown(UUnitTestContext testContext)
 {
     callbacks.Clear();
     PlayFabSettings.HideCallbackErrors = false;
     PlayFabSettings.ForceUnregisterAll();
 }
예제 #12
0
        public override void SetUp(UUnitTestContext testContext)
        {
            PlayFabSettings.TitleId = "6195";
            PlayFabSettings.ForceUnregisterAll();

            _listener = new EventInstanceListener();
            callbacks.Clear();

            //if (!PlayFabClientAPI.IsClientLoggedIn())
            //{
            //    // A few tests just need any valid auth token
            //    LoginWithCustomIDRequest loginRequest = new LoginWithCustomIDRequest
            //    {
            //        CreateAccount = true,
            //        CustomId = SystemInfo.deviceUniqueIdentifier
            //    };
            //    PlayFabClientAPI.LoginWithCustomID(loginRequest, null, null, testContext);
            //    // NOTE: Async callback needs to occcur before those tests run.  Probably need to upgrade the SetUp to be async-capable...
            //}
        }
예제 #13
0
        public void EnumConversionTest_OptionalEnum(UUnitTestContext testContext)
        {
            EnumConversionTestClass expectedObj = new EnumConversionTestClass();
            expectedObj.enumList = new List<testRegion>() { testRegion.USEast, testRegion.USCentral, testRegion.Japan };
            expectedObj.enumArray = new testRegion[] { testRegion.USEast, testRegion.USCentral, testRegion.Japan };
            expectedObj.enumValue = testRegion.Australia;
            expectedObj.optEnumValue = null;

            var actualJson = JsonWrapper.SerializeObject(expectedObj, PlayFabUtil.ApiSerializerStrategy);
            var actualObj = JsonWrapper.DeserializeObject<EnumConversionTestClass>(actualJson, PlayFabUtil.ApiSerializerStrategy);
            testContext.ObjEquals(expectedObj, actualObj);

            expectedObj.optEnumValue = testRegion.Brazil;
            actualJson = JsonWrapper.SerializeObject(expectedObj, PlayFabUtil.ApiSerializerStrategy);
            actualObj = JsonWrapper.DeserializeObject<EnumConversionTestClass>(actualJson, PlayFabUtil.ApiSerializerStrategy);
            testContext.ObjEquals(expectedObj, actualObj);
            testContext.EndTest(UUnitFinishState.PASSED, null);
        }
예제 #14
0
        public void EnumConversionTest_Deserialize(UUnitTestContext testContext)
        {
            EnumConversionTestClass expectedObj = new EnumConversionTestClass(), actualObj;
            expectedObj.enumList = new List<testRegion>() { testRegion.USEast, testRegion.USCentral, testRegion.Japan };
            expectedObj.enumArray = new testRegion[] { testRegion.USEast, testRegion.USCentral, testRegion.Japan };
            expectedObj.enumValue = testRegion.Australia;
            expectedObj.optEnumValue = null;

            string inputJson = "{\"enumList\":[" + ((int)testRegion.USEast) + "," + ((int)testRegion.USCentral) + "," + ((int)testRegion.Japan) + "],\"enumArray\":[" + ((int)testRegion.USEast) + "," + ((int)testRegion.USCentral) + "," + ((int)testRegion.Japan) + "],\"enumValue\":" + ((int)testRegion.Australia) + "}";
            actualObj = JsonWrapper.DeserializeObject<EnumConversionTestClass>(inputJson, PlayFabUtil.ApiSerializerStrategy);
            testContext.ObjEquals(expectedObj, actualObj);
            testContext.EndTest(UUnitFinishState.PASSED, null);
        }
예제 #15
0
 public void InvalidLogin(UUnitTestContext testContext)
 {
     // If the setup failed to log in a user, we need to create one.
     var request = new LoginWithEmailAddressRequest();
     request.TitleId = PlayFabSettings.TitleId;
     request.Email = USER_EMAIL;
     request.Password = USER_PASSWORD + "INVALID";
     PlayFabClientAPI.LoginWithEmailAddress(request, PlayFabUUnitUtils.ApiCallbackWrapper<LoginResult>(testContext, InvalidLoginCallback), PlayFabUUnitUtils.ApiErrorWrapper(testContext, ExpectedLoginErrorCallback), testContext);
 }
예제 #16
0
 public void InvalidRegistration(UUnitTestContext testContext)
 {
     var registerRequest = new RegisterPlayFabUserRequest();
     registerRequest.TitleId = PlayFabSettings.TitleId;
     registerRequest.Username = "******"; // Provide invalid inputs for multiple parameters, which will show up in errorDetails
     registerRequest.Email = "x"; // Provide invalid inputs for multiple parameters, which will show up in errorDetails
     registerRequest.Password = "******"; // Provide invalid inputs for multiple parameters, which will show up in errorDetails
     PlayFabClientAPI.RegisterPlayFabUser(registerRequest, PlayFabUUnitUtils.ApiCallbackWrapper<RegisterPlayFabUserResult>(testContext, InvalidRegistrationCallback), PlayFabUUnitUtils.ApiErrorWrapper(testContext, ExpectedRegisterErrorCallback), testContext);
 }
예제 #17
0
 private static void CheckCallbacks(UUnitTestContext testContext, string expected, HashSet<string> actual)
 {
     testContext.True(actual.Contains(expected), "Want: " + expected + ", Got: " + string.Join(", ", actual.ToArray()));
 }
예제 #18
0
        public void LoginWithAdvertisingId(UUnitTestContext testContext)
        {
            PlayFabSettings.AdvertisingIdType = PlayFabSettings.AD_TYPE_ANDROID_ID;
            PlayFabSettings.AdvertisingIdValue = "PlayFabTestId";

            var loginRequest = new LoginWithCustomIDRequest();
            loginRequest.CustomId = PlayFabSettings.BuildIdentifier;
            loginRequest.CreateAccount = true;
            PlayFabClientAPI.LoginWithCustomID(loginRequest, PlayFabUUnitUtils.ApiCallbackWrapper<LoginResult>(testContext, AdvertLoginCallback), SharedErrorCallback, testContext);
        }
예제 #19
0
        public void TestInstCallbacks_GeneralOnly(UUnitTestContext testContext)
        {
            _listener.Register();

            PlayFabClientAPI.LoginWithCustomID(new LoginWithCustomIDRequest { CreateAccount = true, CustomId = "UnitySdk-UnitTest", TitleId = "6195" }, PlayFabUUnitUtils.ApiCallbackWrapper<LoginResult>(testContext, TestInstCallbacks_GeneralOnlyCallback), null, testContext);
            testContext.True(callbacks.Contains("OnRequest_InstGl"), string.Join(", ", callbacks.ToArray()));
            testContext.True(callbacks.Contains("OnRequest_InstLogin"), string.Join(", ", callbacks.ToArray()));
            testContext.IntEquals(2, callbacks.Count, string.Join(", ", callbacks.ToArray()));
            callbacks.Clear();
        }
예제 #20
0
 public void UserCharacter(UUnitTestContext testContext)
 {
     var request = new ListUsersCharactersRequest();
     request.PlayFabId = _playFabId; // Received from client upon login
     PlayFabClientAPI.GetAllUsersCharacters(request, PlayFabUUnitUtils.ApiCallbackWrapper<ListUsersCharactersResult>(testContext, GetCharsCallback), SharedErrorCallback, testContext);
 }
예제 #21
0
        public void TestStaticCallbacks_Local(UUnitTestContext testContext)
        {
            EventStaticListener.Register();

            PlayFabClientAPI.LoginWithCustomID(new LoginWithCustomIDRequest { CreateAccount = true, CustomId = "UnitySdk-UnitTest", TitleId = "6195" }, PlayFabUUnitUtils.ApiCallbackWrapper<LoginResult>(testContext, TestStaticCallbacks_LocalCallback), SharedErrorCallback, testContext);
            CheckCallbacks(testContext, "OnRequest_StaticGl", callbacks);
            CheckCallbacks(testContext, "OnRequest_StaticLogin", callbacks);
            testContext.IntEquals(2, callbacks.Count, string.Join(", ", callbacks.ToArray()));
            callbacks.Clear();
        }
예제 #22
0
 public void ServerLeaderBoard(UUnitTestContext testContext)
 {
     var serverRequest = new ServerModels.GetLeaderboardRequest();
     serverRequest.MaxResultsCount = 3;
     serverRequest.StatisticName = TEST_STAT_NAME;
     PlayFabServerAPI.GetLeaderboard(serverRequest, PlayFabUUnitUtils.ApiCallbackWrapper<ServerModels.GetLeaderboardResult>(testContext, GetServerLbCallback), SharedErrorCallback, testContext);
 }
예제 #23
0
        public void TestCallbackFailuresGlobal(UUnitTestContext testContext)
        {
            PlayFabSettings.HideCallbackErrors = true;
            PlayFabSettings.RegisterForResponses(null, (PlayFabSettings.ResponseCallback<object, PlayFabResultCommon>)SuccessCallback_Global);

            GetCatalogItemsRequest catalogRequest = new GetCatalogItemsRequest();
            PlayFabClientAPI.GetCatalogItems(catalogRequest, PlayFabUUnitUtils.ApiCallbackWrapper<GetCatalogItemsResult>(testContext, GetCatalogItemsCallback_Single), SharedErrorCallback, testContext);
        }
예제 #24
0
 public void CloudScript(UUnitTestContext testContext)
 {
     var request = new ExecuteCloudScriptRequest
     {
         FunctionName = "helloWorld"
     };
     PlayFabClientAPI.ExecuteCloudScript(request, PlayFabUUnitUtils.ApiCallbackWrapper<ExecuteCloudScriptResult>(testContext, CloudScriptHwCallback), SharedErrorCallback, testContext);
 }
예제 #25
0
        public void TestCallbackFailuresLocal(UUnitTestContext testContext)
        {
            PlayFabSettings.HideCallbackErrors = true;
            PlayFabSettings.GlobalErrorHandler += SharedError_Global;

            RegisterPlayFabUserRequest registerRequest = new RegisterPlayFabUserRequest(); // A bad request that will fail
            PlayFabClientAPI.RegisterPlayFabUser(registerRequest, null, PlayFabUUnitUtils.ApiErrorWrapper(testContext, SharedError_Single), testContext);
        }
예제 #26
0
 public override void Tick(UUnitTestContext testContext)
 {
     // No async work needed
 }
예제 #27
0
 public override void SetUp(UUnitTestContext testContext)
 {
     base.SetUp(testContext);
     PlayFabAndroidPushPlugin.Setup(AndroidPushSenderId);
 }